我实现了一个自定义UIViewController
,它有多个子视图控制器(主要是通过使用故事板Container View
,但不仅仅是)。
我想知道“根”视图控制器向其子级发送消息的最佳方式是什么,考虑到发送的消息所涉及的子级视图控制器不一定是“根”视图控制器?
例如:
我想从#0
视图控制器#1
和#4
. 天真的实现是遍历子节点#0
并向他们发送消息,如下所示:
for (UIViewController *childVC in self.childViewControllers)
{
if ([childVC respondsToSelector:@selector(myMessage:)])
{
[childVC performSelector@selector(myMessage:)];
}
}
但它根本不起作用,因为#3
会收到消息(或者如果它是 aUINavigationController
并且我正在调用自定义方法,则可能不会收到)并且不会将其传播给它的孩子(这里#4
)。
那么是否有可能向自己的孩子发送消息,并让消息通过UIViewController
层次结构传播?
如果没有,另一种方法是使用NSNotificationCenter
,让对消息感兴趣的孩子(#1
和#4
)观察通知,并在必要时让根视图控制器发布通知。但我觉得只给两个孩子发信息有点过头了。