2016-03-16 1 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

после удаления элемента из массива, перезагрузите таблицу. – 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

. Если вы имеете в виду «User Interaction Enabled» в инспекторе свойств, это так. –

Смежные вопросы