Подготовьтесь к переходу: отправителем является представление таблицы, а не ячейка представления таблицы - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь реализовать функциональность Peek & Pop с 3D Touch. Я следую инструкциям на сайте Apple .

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

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard let selectedTableViewCell = sender as? UITableViewCell,
         let indexPath = tableView.indexPath(for: selectedTableViewCell)
         else { preconditionFailure("Expected sender to be a valid table view cell") }

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

Когда я получаю путь индекса таким образом:

guard let indexPath = tableView.indexPathForSelectedRow else {fatalError()}

Это работает, когда я просто выбираю ячейку табличного представления. Это не работает, когда я пытаюсь заглянуть. Он показывает мне просмотр таблицы, но он пуст. Я ожидал этого, потому что в документации Apple упоминается, что indexPathForSelectedRow возвращает ноль при просмотре.

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

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Непонятно, почему эта ошибка возникает после изменения кода, как предложено @vadian.

Это была моя единственная идея.Мы должны увидеть остальную часть вашего кода, я думаю, что это должно быть проблемой где-то там.Без этого я думаю, что никто не может сказать больше ничего.

Тем не менее, я думаю, что вы могли бы кое-что сделать (хотя это не решение вашей первоначальной проблемы): если вы следуете учебнику Apple, как вы сказалиВы уже установили путь индекса в вашем методе previewingContext(_:viewControllerForLocation:).Если это сработает, вы сможете манипулировать данными, которые вам нужны.И когда вы переходите к другому VC, вы можете использовать indexPathForSelectedRow, который, как вы упомянули, работает, когда вы выбираете, но не когда вы смотрите.Не видя остальной код, это лучшее, что я могу сделать.

0 голосов
/ 27 марта 2019

Чтобы этот код заработал, вам нужно подключить переход с помощью ctrl -draging из ячейки табличного представления , а не из контроллера представления .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...