我已经使用Protocols and Delegates几周了,已经习惯将子视图中的数据传递给它的父视图没问题。
但是我现在正尝试将一些数据与子子视图中的协议和委托传递到导航堆栈上的父视图。
即。
view 0 - to here, missing view 1
-- view 1
--- view 3 - pass from here
然而问题是将父视图设置为委托我似乎无法找到方法。我已经设置好了这个
SubResultViewController *subResultViewController = [[SubResultViewController alloc] init];
[subResultViewController setDelegate:self];
然后我在subResultViewController中设置了所有内容当我执行所有代码时,我没有得到任何错误,当我在主视图中将一个断点放入委托的接收方法时,我将所有内容传递给它被访问..
我希望能以这种方式(通过导航堆栈上的多个视图)使用协议和委托获得一些帮助
任何帮助将不胜感激。
答案 0 :(得分:1)
从视图传递委托的问题是viewController已经加载了一次,所以这样做:
SubResultViewController *subResultViewController = [[SubResultViewController alloc] init];
[subResultViewController setDelegate:self];
正在初始化一个新的SubResultViewController对象,而不是已经加载(初始化)的对象。 你必须以某种方式将接收viewController传递给你想要发送消息的视图。这就是NSNotification派上用场的地方。您可以将接收视图控制器设置为通知的监听器(观察者),然后随时发布具有相同“名称”的通知,任何收听的内容都将获得该消息。一旦我学会了如何使用NotificationCenter它改变了我的方式能够在视图/类之间进行通信。