2016-03-16 40 views
1

我有一個的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線。當我通過滑動刪除時會調用它,但當我進入編輯模式並單擊刪除圖標時不會被調用。

+0

請添加控制器的其餘部分,類似的cellForRowAtIndexPath等等。另外,你要如何工作? – ryantxr

+0

從數組中刪除元素後,重新加載tableview。 – DHEERAJ

+0

@DHEERAJ。不,不這樣做。 – rmaddy

回答

0

用這個,看起來更好,我

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    return true 
} 

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { 
    let deleteAction = UITableViewRowAction(style: .Destructive, title: "Delete") { action in 
     // Update your datasource here 
     tableView.reloadData() // Reload data 
    } 
    return [deleteAction] 
} 
+0

試過了。它沒有任何區別。我仍然可以通過滑動刪除,但不能在刪除模式下觸摸紅色刪除按鈕。 –

+0

驗證用戶交互是否在UITableViewCell上啓用 – Ro22e0

+0

如果您的意思是「用戶交互已啓用」屬性檢查器,它是。 –

相關問題