Я хочу предотвратить переход контроллера навигации при нажатии строки, но хочу перейти при нажатии кнопки аксессуара - PullRequest
0 голосов
/ 06 июня 2019

Я получаю нежелательный результат при нажатии на ячейку таблицы.Я только хочу сделать переход, когда кнопка аксессуара нажата.Текущий код работает, когда я нажимаю кнопку доступа к ячейке.Но если я коснусь представления содержимого, произойдет переход, и мой prepare(for:sender:) не удастся, потому что отправитель не IndexPath, это TableViewCell.Кстати, представление, содержащее TableView, находится в стеке контроллера навигации.

Я попытался отменить выбор параметра «Взаимодействие с пользователем» для представления содержимого ячейки представления таблицы, но это, похоже, также блокирует вспомогательную кнопку.

Это работает, как и ожидалось

    func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {
        performSegue(withIdentifier: "ShowDetails", sender: indexPath)
    }

Когда ячейка повернута, она вызывается до того, как вызывается метод prepare (for: sender :).

    func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
        log.debug("didHightlightRowAt")/
    }

Я нене знаю, как предотвратить переход при постукивании по ячейке.Когда ячейка вызывает prepare(for:sender:), я получаю эту ошибку: Не удалось привести значение типа «UITableViewCell» (0x11edbdaa0) к «NSIndexPath» (0x10e209cf8).2019-06-06 12: 10: 24.086845-0500 Землетрясения [1668: 53901] Не удалось преобразовать значение типа 'UITableViewCell' (0x11edbdaa0) в 'NSIndexPath' (0x10e209cf8).

, когда этот код выполняется:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.destination is DetailViewController {
            let indexPath = sender as! IndexPath

(потому что отправитель - это ячейка просмотра таблицы)

...