如何从另一个事件向UIViewController发送事件

时间:2014-09-13 09:42:43

标签: ios objective-c uinavigationcontroller uitabbarcontroller

我的申请结构如下:

1. UITabbarController
       1.1 UIViewController
       1.2 UINavigationController        
             1.2.1 UIViewController
             1.2.2 UIViewController
             1.2.3 UIViewController

它们按以下顺序显示:

1, present -> 1.2, 1.2.1, 1.2.2, 1.2.3

用户使用1.2.3完成其工作后,1.2 NavigationController将被解除。

我希望1.1 UIViewController知道1.2.3已经完成了它的工作

我怎么能实现这个目标?

2 个答案:

答案 0 :(得分:3)

您可以使用NSNotificationcenter轻松执行(但不是性能方式)。 1.1 UIViewController等待通知:

[[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(receiveTestNotification:) 
        name:@"TestNotification"
        object:nil];

1.2.3完成工作后,发布通知:

[[NSNotificationCenter defaultCenter] 
        postNotificationName:@"TestNotification" 
        object:nil];

答案 1 :(得分:1)

您可以使用通知来实现此目的。

<强>通知

通知检查@ Dummy的回答。使用通知的好处是,它减少了对象之间不必要的耦合。

另一个肮脏的伎俩

由于VC 1.1是UITabbarController的一部分,您可以使用

访问它
NSArray *viewControllers = [tabBarController viewControllers];

现在,您可以从viewControllers阵列访问VC 1.1(可能需要添加iskindofclass验证),并向其发送消息。 再次,这是一个肮脏的把戏。它仅供参考:)