我有一個的UITableViewDelegate下面的代碼:可以通過滑動刪除錶行,但不是在編輯模式
@IBAction func editButtonPressed(sender: AnyObject) {
if weightsTableView.editing {
editButton.title = "Edit"
weightsTableView.setEditing(false, animated: true)
} else {
editButton.title = "End Edit"
weightsTableView.setEditing(true, animated: true)
}
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
scale.weights.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}
func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {
let ws = scale.weights.removeAtIndex(sourceIndexPath.row)
scale.weights.insert(ws, atIndex: destinationIndexPath.row)
}
我可以無需進入編輯模式刷卡從表中刪除的條目。當我進入編輯模式時,我可以移動表格中的條目,但是觸摸刪除圖標不會執行任何操作。
我是新來的。我錯過了什麼?
按照要求,這裏是表控制器的剩餘部分代碼:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return scale.weights.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("WeightSetCell", forIndexPath: indexPath) as! WeightSetTableViewCell
cell.gaugeLabel.text = scale.weights[indexPath.row].gauge
cell.initialLabel.text = "\(scale.weights[indexPath.row].initial) " + scale.weights[indexPath.row].weightUnit
cell.incrementLabel.text = "\(scale.weights[indexPath.row].increment) " + scale.weights[indexPath.row].weightUnit
return cell
}
其他信息:我把一個斷點上,如果editingStyle == .Delete線。當我通過滑動刪除時會調用它,但當我進入編輯模式並單擊刪除圖標時不會被調用。
請添加控制器的其餘部分,類似的cellForRowAtIndexPath等等。另外,你要如何工作? – ryantxr
從數組中刪除元素後,重新加載tableview。 – DHEERAJ
@DHEERAJ。不,不這樣做。 – rmaddy