2015-01-07 3 views
0

Я пытался следовать этой статье о том, как использовать первого ответчика.Как использовать первого ответчика для вызова другого метода UIViewController

http://www.cocoanetics.com/2012/09/the-amazing-responder-chain/

И похоже, если контроллер вид существует в стороне контейнера, такие как навигационный контроллер, я должен быть в состоянии назвать первый метод ответчика, который реализован в другом контроллере представления

Здесь является расположение в раскадровке:

UINavigationController - (отношения) -> UITableViewController1 - (толчок) -> UITableViewController2

Я хотел бы реализовать мето d в UITableViewController1

т.е.

- (void)coolMethod:(id) { ... } 

Но вызов метода в UITableViewController2

т.е.

[[UIApplication sharedApplication] sendAction:@selector(coolMethod:) to:nil from:nil forEvent:nil]; 

То, что я хочу для sendAction: до: от: forEvent: послать действие до UINavigationController, а затем отправить его UITableViewController2

Я пытаюсь достичь такой возможности? Что я делаю не так?

(Кроме того, я попытался связать его в раскадровке, но он не соединится. Очевидно, что-то неправильно, но я не знаю, что мне не хватает)

Любая помощь или совет вы могли бы дать мне было бы очень оценили!

ответ

2

Это не то, для чего предназначена цепочка ответчиков, и ваш VC1 не находится в цепочке ответчиков для VC2. Я думаю, вы могли бы реализовать свой собственный подкласс контроллера навигации, чтобы сделать это, но это не будет хороший код.

То, что вы описываете, лучше обрабатывается, предоставляя VC2 свойство делегата и делая VC1 реализующим протокол dal agate и устанавливая себя как делегат при нажатии VC2.

+0

Как бы поместить VC1 в цепочку ответчиков для VC2 – DerrickHo328

+0

Вы бы этого не сделали. Если вы собираетесь что-то делать, вы выходите из цепи ответчиков на навигационном контроллере, а затем можете переадресовать свой собственный код (предположительно, с помощью некоторой логики поиска для правильного контроллера). – Wain

+0

Интересно. Я предположил, что когда вы нажимаете UIviewControllers в контроллер навигации, он добавляет их в стек и, по существу, перемещается по стеку, пока не найдет того, кто его реализует. – DerrickHo328