Различить касание UITableView и программный выбор? - PullRequest
0 голосов
/ 13 февраля 2019

Я собираюсь вызывать разные методы в зависимости от того, касается ли пользователь ячейки UITableView или она выбрана программно.Однако я не могу отделить их;программный запускает все в didSelectRowAt indexPath.Есть ли способ использовать их более независимо?

Вот мой программный код:

func selectTableViewRowProgrammatically() {

    let indexPath = IndexPath(row: someVar, section: 0);
    self.tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableView.ScrollPosition.none)
    self.tableView(self.tableView, didSelectRowAt: indexPath)

}

Спасибо!

1 Ответ

0 голосов
/ 13 февраля 2019

Что вы хотите, чтобы приложение делало, когда вы выбираете ячейку таблицы вручную, и когда вы ее программно вызываете?

В настоящее время ваш программный способ вызывает тот же метод, который вызывается при касании ячейки,то есть tableView(_:didSelectRowAt:).

Так что, если вы хотите сделать какие-либо дополнительные вычисления, просто добавьте его в ваш метод selectTableViewRowProgrammatically до или после вызова self.tableView(self.tableView, didSelectRowAt: indexPath).

Чтобы программно выделить ячейкуВы можете вызвать selectRow (at: animated: scrollPosition:) .

Обратите внимание на Discussion часть в документации:

Вызов этого метода не вызываетделегат для получения сообщения tableView (: willSelectRowAt :) или tableView (: didSelectRowAt :), а также отправка уведомлений selectionDidChangeNotification наблюдателям.

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