【问题标题】:How to use object received from NSNotification in viewWillAppear:如何在 viewWillAppear 中使用从 NSNotification 接收到的对象:
【发布时间】:2016-11-21 00:02:51
【问题描述】:

这是我的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: 之前发送吗?如果没有,我怎么能在viewWillAppear: 中使用updateTortoiseLevel:?

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

【问题讨论】:

    标签: objective-c uiviewcontroller nsnotificationcenter nsnotification viewwillappear


    【解决方案1】:

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

    好吧:你不能。想想看。谁在这儿叫你?它是 runtime,提供通知。所以没有人为你返回一个值到。运行时不会等着听你是否有一个价值可以作为回应,即使你这样做了,你认为运行时会用它做什么?在这种情况下返回值的概念是没有意义的。

    如果有的话,我如何在 viewWillAppear: 中使用 updateTortoiseLevel:?

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

    【讨论】:

    • 很公平,这就是我的想法。那么我可以使用传入的NSNumber 进行viewWillAppear: 的条件检查吗?或者这也是一种死胡同?
    • @AnthonyShintoluggenprog 我不明白这个问题。在viewWillAppear: 中,在什么意义上存在“传入的 NSNumber”?如果发布通知(并且您已注册接收它,大概是以您的updateTortoiseLevel 被调用的方式),则该号码会传入。同样,viewWillAppear: 是运行时在其自身有意义的时刻调用的东西——在这种情况下,因为您的视图正在出现。
    • 查看我修改后的答案,因为我开始能够以一种朦胧的方式猜测你可能认为你会去哪里......
    • 哇.....根本没有想到这一点,我一直在努力让一切都与viewDidAppear:一起工作。所以,如果我能多理解一点,如果我在捕获updateTortoiseLevel: 中的NSNumber 后决定运行条件,那么该工作何时完成?当我弹回ViewControllerA 时会看到结果吗? [self runCellUpdates]; 将更新需要更新的单个单元格。到时候我还需要打电话给viewWillAppear:吗?
    • "什么时候完成这项工作?"立即地。 “当我弹出时我会看到结果” 为什么不呢?如果在 VC B 显示时更新了 VC A 界面,那么当您弹出显示 VC A 时,您将看到更新后的界面(只要您不做任何事情弄乱它)。尝试一下,看看会发生什么;宇宙不会爆炸,你知道的。 :) 可能发生的最糟糕的情况是它不起作用,然后你可以想想为什么会这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    相关资源
    最近更新 更多