Что отменяет выделение выбранной ячейки, когда навигационный контроллер отображает представление? - PullRequest
1 голос
/ 21 января 2011

Шаблон NavigationController по умолчанию, предлагаемый Apple, он имеет один navigationController и таблицу.

И если вы выберете ячейку, новое представление будет помещено в navigationController, и если вы откроете представление, выбранная ячейкабудет отключен автоматически.

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

или она просто заново загружает все данные?

Ответы [ 2 ]

6 голосов
/ 21 января 2011

как таблица узнает, когда ее отключить

Вы можете отменить выбор своей ячейки прямо в обработчике выбора:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [tableView deselectRowAtIndexPath: indexPath];
    ...
}

или сброс выбора в методе контроллера -viewWillAppear:

и как он узнает, какая ячейка выбрана?

UITableView имеет следующий метод для получения выбранной строки indexPath:

- (NSIndexPath *)indexPathForSelectedRow
0 голосов
/ 06 сентября 2017

Для Swift 3.0

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    if self.yourTableView.indexPathForSelectedRow != nil
    {
        self.yourTableView.deselectRow(at: self.yourTableView.indexPathForSelectedRow!, animated: true)
    }
}

Этот код также позволит избежать Crash ...

Кроме того, добавьте строку ниже в другой ViewController, который вы нажимаете при выборе TableViewCell.

self.navigationController?.interactivePopGestureRecognizer?.isEnabled = true

Работает как Очарование =]

Надеюсь, это поможет ..

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