Как использовать 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.

Другие вопросы по тегам