2016-10-19 7 views
0

Я пытаюсь добавить вторую строку прокрутки в строки таблицы таблицы, но editActionsForRowAtIndexPath не вызывается, когда я прокручиваю строку. Это, несмотря на мой класс объявляя какeditActionsForRowAtIndexPath не вызывается, как commit editingStyle, так и canEditRowAt присутствует

override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 

    return true 
} 

и

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 

} 

Оба они называются, когда я красть, потому что у меня тоже есть регулярные удаления кнопки.

Моя editActionsForRowAtIndexPath функция записывается следующим образом:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewRowAction? { 

    print("triggered!") 

    let more = UITableViewRowAction(style: .default, title: "More") { action, index in 
     print("more button tapped") 
    } 
    more.backgroundColor = UIColor.blue 

    return more 
} 

Спасибо заранее!

+1

Свойство 'delegate'' вашего 'tableView' установлено? – Aaron

+0

У меня была такая же проблема, и ответ Аарона работал на меня. Я случайно удалил делегата tableView из класса. – waseefakhtar

+0

Если кто-то еще сталкивается с этой проблемой по другой причине, обратите внимание, что этот вызов делегата выполняется, когда пользователь фактически просматривает строку tableView, а не когда вызывается tableload reloadData. Удостоверьтесь, что ничего не покрывает tableView, предотвращая появление салфетки. – alionthego

ответ

2

Вы не используете обновленный Swift 3 API для этого конкретного метода. Метод делегата должен быть указан как:

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { 
    print("triggered!") 

    let more = UITableViewRowAction(style: .default, title: "More") { action, index in 
     print("more button tapped") 
    } 
    more.backgroundColor = UIColor.blue 

    return [more] 
} 
+0

Вы сделали мою ошибку понятной: ваш код не работает, но он близок: я потерял скобки в моем возвратном значении, [больше]. Подумайте, почему никакие скобки на любом из них не работают? – rodrigochousal

+0

@rodrigochousal 'more' - это одно действие, а [больше] - массив действий. – JonSlowCN