【问题标题】:Use NSNotificationCenter selector for one observer in multiple view controllers在多个视图控制器中为一个观察者使用 NSNotificationCenter 选择器
【发布时间】:2016-11-20 04:50:10
【问题描述】:

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

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

这可能吗?还是我应该只发出两个单独的通知?

【问题讨论】:

    标签: ios uiviewcontroller notifications nsnotificationcenter


    【解决方案1】:

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

    或者

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

    【讨论】:

    • 也许我的措辞很有趣,但这与我来自哪个UIViewController 无关。 GameVCWinVC 都将返回一个带有 1 或 0 的 NSNumber,以通知 viewWillAppear: 中的 LevelVC 是否更新单元格。我可以在GameVCWinVC 中声明并调用getUpdate: 吗?
    • 这有意义吗?
    • 你可以创建一个 NSDictionary 持有该特定数字并传入 NSNotification 创建一个委托并将此数字作为参数传递并调用 @987654337 @方法!
    • 我应该更清楚一点,你可以使用getUpdate函数作为委托。
    • 这是有道理的,我可能会合并它。但同样,我可以在两个单独的视图控制器中使用该方法吗?我是通知新手,所以这就是我问的原因
    猜你喜欢
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多