Deleting a Row from a UITableView in Swift 3?

前端 未结 8 1261
难免孤独
难免孤独 2020-11-28 08:31

I\'m new to coding and learning swift, I am following a tutorial for swift 2 and working with swift 3 so there are a few issues I have when following along, this being one I

相关标签:
8条回答
  • 2020-11-28 08:56

    First you need to add this function

    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        return true 
    }
    

    then your function is ok but no need of tableview reload data just call tableview.beingUpdates and tableview.endUpdates

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete {
           print("Deleted")
           self.catNames.remove(at: indexPath.row)
           self.tableView.beginUpdates()
           self.tableView.deleteRows(at: [indexPath], with: .automatic)
           self.tableView.endUpdates() 
        }
    }
    
    0 讨论(0)
  • 2020-11-28 08:56
        self.tableView.beginUpdates()
        self.tableView.deleteRows(at: [ IndexPath(row: index, section: section) ], with: .fade)
        self.remove_object_from_model()
        self.tableView.endUpdates()
    
    0 讨论(0)
  • 2020-11-28 09:04

    Works for Swift 3 and Swift 4

    Use the UITableViewDataSource tableView(:commit:forRowAt:) method, see also this answer here:

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
      if editingStyle == .delete {
        print("Deleted")
    
        self.catNames.remove(at: indexPath.row)
        self.tableView.deleteRows(at: [indexPath], with: .automatic)
      }
    }
    
    0 讨论(0)
  • 2020-11-28 09:10

    In Swift 4 Try This

    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
            return true
        }
        func tableView(_ tableView: UITableView, commit editingStyle:   UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
            if (editingStyle == .delete) {
                arrStudentName.remove(at: indexPath.row)
                tableView.beginUpdates()
                tableView.deleteRows(at: [indexPath], with: .middle)
                tableView.endUpdates()
            }
        }
    
    0 讨论(0)
  • 2020-11-28 09:10
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    
        if editingStyle == .delete {
    
            self.animals.remove(at: indexPath.row)
    
            self.dataDisplayTbleView.reloadData()
        }
    
    }
    
    0 讨论(0)
  • 2020-11-28 09:13

    My answer for you

    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool
    {
         return true
    }
    
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath)
    {
        if editingStyle == .delete
        {
            array.remove(at: indexPath.row)
            tblDltRow.reloadData()
        }
    }
    

    You need to refresh the table

    0 讨论(0)
提交回复
热议问题