Когда я показываю контроллер представления в настройке UINavigation из аксессуара ячейки таблицы, как узнать, из какой ячейки таблицы он получен? - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть контроллер навигации, который имеет (среди прочего) один контроллер представления, который содержит UITableView с базовым UITableViewCellUITableViewCell есть индикатор раскрытия для аксессуара.Эта таблица содержит контакты для пользователя.

Я создал новый контроллер представления «Просмотр контакта», который позволяет просматривать детали контакта.Я щелкаю правой кнопкой мыши и перетаскиваю из индикатора раскрытия (хотя я чувствую, что он прошел всю ячейку таблицы) в ячейке прототипа к новому контроллеру представления и выбираю «show».

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

1 Ответ

0 голосов
/ 26 ноября 2018

В основном, есть два способа сделать это.
Вы выбрали один из способов, путь перехода.Другой способ - сделать это программно и прослушать методы TableViewDelegate.

Segue Way
Вам необходимо TableViewController для передачи данных в ViewContactViewController при нажатии ячейки.Поскольку вы использовали segue, вам нужно удерживать ViewContactViewController, прежде чем оно появится на экране.
Введите prepareForSegue:sender: метод .

В этом методе получите удержаниеконтроллера представления и передать ему необходимые данные.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([[segue identifier] isEqualToString:@"showContact"]) {
        ViewContactViewController *contactViewController = [segue destinationViewController]; // get hold of destination VC             
        contactViewController.contact = [self.contacts objectAtIndex:[self.tableView indexPathForSelectedRow].row]; // use indexPathForSelectedRow to get hold of the indexpath of selected Cell. The data can be retrieved from the datasource array and passed on                     
    }
}

Допущения в вышеприведенном коде:
1. showContact определяется как имя шоу segue.
2. ViewContactViewController имеетоткрытое свойство, contact.
3. self.contacts - массив данных контактов, который используется в методах источника данных tableview.

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