Как вы можете сообщить UIViewController, что кнопка нажата в UIPopoverController?

#iphone #uiviewcontroller #uipopovercontroller

#iPhone #uiviewcontroller #uipopovercontroller

Вопрос:

я думаю, что название объясняет само себя. У меня есть UIPopoverController, в нем есть tableview, и когда я выбираю ячейку, я хочу сообщить ей UIViewController.

Есть ли простое решение или мне нужны KeyValueObserving или уведомления?

Ответ №1:

Отправьте NSNotification из tableview и добавьте UIViewController в качестве наблюдателя.

Комментарии:

1. Думаю, это самый простой метод.

Ответ №2:

вы могли бы использовать один из двух подходов по вашему выбору.

сначала: используя делегат / протокол. http://www.thepensiveprogrammer.com/2010/05/objective-c-protocols-and-delegates.html

второе: установите ваш UIViewController в качестве целевого для вашего UIButton.

например

 [btn addTarget:myController action:@selector(ActionWillBePerformedInController:) forControlEvents:UIControlEventTouchUpInside];
  

Ответ №3:

Публикация NSNotification будет работать хорошо… вы также можете создать объект обратного вызова и селектор в своем классе UITableViewController.

вы могли бы инициализировать свой UITableViewController с помощью объекта обратного вызова и селектора обратного вызова

 initWithTarget:(id)theTarget andSelector:(SEL) theSelector
  

… сохраните значения в свойствах

затем из didSelectRowAtIndexPath в вашем TableView … вызовите

 [self.target performSelector:self.selector];
  

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

 [[MyTableView alloc] initWithTarget:(self) andSelector:@selector(popoverControllerDidRequestClose)];