如何在viewWillAppear中使用从NSNotification接收的对象:

时间:2016-11-21 00:02:52

标签: objective-c uiviewcontroller nsnotificationcenter nsnotification viewwillappear

以下是我的ViewControllerA作为NSNotification系统的一部分实现的方法:

- (NSInteger)updateTortoiseLevel:(NSNotification*)notification {
    _updateValue = 0;
    if ([notification.name isEqualToString:@"gameToTortoise"]) {
        NSNumber* update = [notification.userInfo objectForKey:@"gameToTortoise"];
        updateValue = [update integerValue];
    } else {
        // do other things
    }
    return _updateValue;
}

首先,我甚至不知道我是否可以从这种方法中退回任何东西,所以如果我不能,请告诉我。

这就是我追求的目标:

- (void)viewWillAppear:(BOOL)animated {
    if (_update == 1) {
        [self runCellUpdates];
    }
}

当我将ViewControllerB弹出到A时,我正在使用通知系统。首先会发生什么?...通知是否在viewWillAppear:之前发送?如果没有,请问如何在updateTortoiseLevel:内使用viewWillAppear:

不要提及“使用委托设计模式”,因为我已经考虑过了,但它对我当前的设计不起作用(至少95%肯定)。干杯

1 个答案:

答案 0 :(得分:0)

  

首先,我甚至不知道我是否可以从这种方法中退回任何东西,所以如果我不能告诉我。

好的:你不能。想一想。谁在这称呼你?它是运行时,提供通知。因此,没有人可以将值返回到。运行时不会等到听到你是否有一个值作为响应回传,即使你做了,你认为运行时会用它做什么?在这种情况下返回值的概念毫无意义。

  

我如何使用updateTortoiseLevel:在viewWillAppear里面:如果有的话?

这个问题似乎毫无意义,但无论如何我的回答是:你为什么要这样做?您可能会收到带有通知的updateTortoiseLevel消息,并且NSNumber包含在其中,所以为什么不做你想要做的任何事情当时那里updateTortoiseLevel内?