Popover UITableViewController запускает действие на mainView - PullRequest
1 голос
/ 22 января 2012

У меня есть приложение, которое дает вам контроллер popOver Tableview.Этот popOver имеет n ячеек.Мне нужно иметь возможность вызывать функцию в главном окне всякий раз, когда затрагивается одна из ячеек таблицы во всплывающем окне.Как бы я поступил так?

Было бы неплохо иметь возможность отклонить всплывающее окно при касании ячейки ....

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSLog(@"Cell check %@", [totalArray objectAtIndex:indexPath.row]);
    [self dismissPopoverAnimated:YES];
}

Здесь будет напечатана консольтекст в ячейке, но мне нужно иметь возможность передать текст этой ячейки обратно в основное окно ... о да, и [self dismisspopoveranimated: yes] не работает ...

1 Ответ

3 голосов
/ 22 января 2012

Традиционный способ решения этой проблемы состоит в том, чтобы сделать ваш "основной" контроллер представления делегатом класса с табличным представлением:

  1. Определите протокол делегата для конкретного приложения, добавьте специфичный для метода делегатак вашему варианту использования, и измените ваш «основной» контроллер представления, чтобы соответствовать ему.Метод делегата должен принимать параметр, тип которого представляет собой данные, которые вы хотите передать «основному» контроллеру представления (в вашем случае, либо UITableViewCell, либо NSString, содержащую его текст).
  2. Создайте свойство вкласс с табличным представлением, тип которого является новым протоколом делегата.
  3. Передайте ваш "основной" контроллер представления в класс с табличным представлением, установив его в качестве значения нового свойства.
  4. Когда вызывается метод tableView:didSelectRowAtIndexPath:, вызовите метод делегата для созданного вами делегата, передавая данные, которые вы хотите передать, «главному» контроллеру представления.Это дает вашему «основному» контроллеру представления возможность реагировать на тот факт, что ячейка таблицы была выбрана во всплывающем окне, и она может вызывать любую функцию, которая вам нужна.

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

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

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