我實現了一個定製的UIViewController
,它具有多個子視圖控制器(主要是使用故事板的Container View
,但不僅僅是)。將消息發送給多個子視圖控制器的最佳方式
我想知道什麼是「根」視圖控制器向其子發送消息的最佳方式,考慮到發送消息所關注的子視圖控制器不一定「根」視圖控制器的直接孩子?
例如:
我想從#0
發送消息,以查看控制器#1
和#4
。天真的實現是迭代的#0
孩子送進來的消息,像這樣:
for (UIViewController *childVC in self.childViewControllers)
{
if ([childVC respondsToSelector:@selector(myMessage:)])
{
[childVC [email protected](myMessage:)];
}
}
但它根本不起作用,因爲#3
將收到消息(或者可能不是,如果它是一個UINavigationController
我正在調用一個自定義方法),並且不會將它傳播給它的子項(這裏是#4
)。
因此是否有可能向其子女發送消息,並讓消息通過UIViewController
層次結構傳播?
如果沒有,一個替代方案是使用NSNotificationCenter
,使感興趣的消息(#1
和#4
)觀察用於通知在孩子,並使根視圖控制器交的通知,如果必要。但是我發現僅僅向兩個孩子發送消息就有點矯枉過正。
首先,如果方法接受一個參數,並且你沒有一個參數,那就是UB。 – 2013-03-07 19:08:45
我不認爲這是矯枉過正 - 使用NSNotificationCenter。 – 2013-03-07 19:09:16
經典NSNotificationCenter – rocky 2013-03-07 19:10:12