在多个视图控制器

时间:2016-11-20 04:50:11

标签: ios uiviewcontroller notifications nsnotificationcenter

我可以在多个视图控制器中使用选择器getUpdate:吗?我正在注册LevelViewController作为GameViewControllerWinViewController的观察员。后两个视图控制器都有一个后退按钮(当按下时,弹出你回到LevelVC),通知的想法是告诉LevelVC是否更新集合视图单元格按下后退按钮时(通过viewWillAppear:方法)。

viewWillAppear:中,我不想调用两个单独的方法(一个来自GameVC,一个来自WinVC)以获取我的更新,我只是一个流畅的方法,可用于任何一种。

这是我想要的(在LevelVC中):

- (void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(getUpdate:)        
                                                 name:@"getUpdateForCell" 
                                               object:nil];
}

并合并

- (void)getUpdate:(NSNotification *)notification {
    NSDictionary *data = [notification userInfo];
    // pop
}

两次......一次在GameVC,另一次在WinVC

这可能吗?或者我应该只发两个单独的通知?

1 个答案:

答案 0 :(得分:0)

您可以创建自己的NSDictionary并在userInfo中作为值传递,以确定您来自哪个UIViewController并使用if语句正确处理该情况。

<强>替代地

您可以使用委托在后退按钮出现时执行事件,并对之前的UIViewController执行适当的操作。我个人更喜欢这种方法。