Как использовать First Responder для вызова другого метода UIViewController
Я пытался следовать этой статье о том, как использовать первый ответчик.
http://www.cocoanetics.com/2012/09/the-amazing-responder-chain/
И кажется, что если контроллер вида существует в контейнере, таком как контроллер навигации, я должен быть в состоянии вызвать метод первого респондента, который реализован в другом контроллере представления
Вот макет в раскадровке:
UINavigationController - (отношение)-> UITableViewController1 -(нажатие)-> UITableViewController2
Я хотел бы реализовать метод в UITableViewController1
т.е.
- (void)coolMethod:(id) { ... }
Но вызовите метод в UITableViewController2
т.е.
[[UIApplication sharedApplication] sendAction:@selector(coolMethod:) to:nil from:nil forEvent:nil];
Я хочу, чтобы sendAction:to:from:forEvent: отправляло действие до UINavigationController, а затем отправляло его вниз по UITableViewController2.
Что я пытаюсь добиться возможности? Что я делаю неправильно?
(Кроме того, я попытался связать его в раскадровке, но он не соединится. Очевидно, что-то не так, но я не знаю, что мне не хватает)
Буду очень признателен за любую помощь или совет!
1 ответ
Это не то, для чего предназначена цепочка респондента, а ваш VC1 не входит в цепочку респондента для VC2. Я думаю, вы могли бы реализовать свой собственный подкласс навигационного контроллера для этого, но это не было бы хорошим кодом.
То, что вы описываете, лучше обрабатывать, предоставляя VC2 свойство делегата и заставляя VC1 реализовывать протокол агата dal и устанавливать себя в качестве делегата при нажатии VC2.