如何防止在弹出 UIViewController 后调用通知观察者?

How to prevent notitifcation observer from being called after UIViewController is popped?

我有 2 UIViewController A 和 B。从 A I pushed B 和 B 有 2 observers for reachability。现在,当我弹出 B 并在此之后到达 A 时,如果网络关闭,则调用 VC B 中编写的方法。我无法弄清楚如果 B 已经是 popped 来自 navigation stack 如何调用它的方法?

注-

  1. 我在 VC A 中没有任何 属性 用于 VC B。我总是 每当从 VC A.
  2. 推送时创建 VC B 的新实例
  3. 我也知道我可以在 viewWillDisappear 中删除观察者,但我仍然想 知道为什么即使在弹出 VC B 之后也会调用观察者。

如果您使用在 viewWillAppear 中打开并在 viewWillDisappear 以及其他相关位置(例如在 isMovingFromParentViewController 或根据您的呈现方式适用的内容。然后您可以在观察者触发时标记您的操作。这是大纲。

@interface ViewController ()

@property (nonatomic) BOOL flag;

@end

@implementation ViewController

// Action triggered by observer
- ( void ) someAction
{
    if ( self.flag )
    {
        // do it
    }
}

// Switch on
- ( void ) viewWillAppear:( BOOL ) animated
{
    [super viewWillAppear:animated];
    self.flag = YES;
}

// Switch off
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    self.flag = NO;
}

@end

这很简单。它易于维护和调试,而且如果您需要在某个阶段基于某些其他原因打开或关闭操作,它也很容易适应。

PS : 你真的需要展示一些代码......如果你不提供任何代码就很难给出更具体的答案。