Отключить действие смахивания по ячейке

Итак, у меня есть приложение (написанное на Swift), которое позволяет пользователю искать поля для гольфа в searchController. Затем они могут выбрать этот курс, а затем этот выбранный курс перейдет в tableView. Я использую один и тот же контроллер представления как для контроллера поиска, так и для списка выбранных курсов.

Проблема, с которой я столкнулся, заключается в том, что я хочу, чтобы у пользователя была возможность провести пальцем, чтобы удалить выбранные курсы, но НЕ курсы, которые заполняют контроллер поиска, когда он активен. Действие пролистывания для удаления работает в обычном tableView. Когда searchController активен, у меня он до такой степени, что кнопка удаления отключена. НО я хочу, чтобы ячейки вообще не могли скользить, если searchController активен. Не могу заставить это работать. Какие-либо предложения? Пожалуйста и спасибо.

Вот мой код:

 override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

    if searchController.active {

    UITableViewCellEditingStyle.None

    } else {

    let deletedValue = previousCoursesFromRealm[indexPath.row]

    if editingStyle == UITableViewCellEditingStyle.Delete {
        let realm = try! Realm()
        try! realm.write {
        realm.delete(deletedValue)
        }

     coursesTableView.reloadData()

     }
    }
   }  

person dcotter    schedule 31.12.2015    source источник


Ответы (1)


Я думаю, что метод, который вы ищете, это tableView(_:canEditRowAtIndexPath:).

Возврат false в этом методе должен отключить действие смахивания. Затем вы можете привязать это значение к вашему контроллеру поиска:

override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return !searchController.active
}
person Ronald Martin    schedule 31.12.2015