如何防止notitifcation观察者从UIViewController中被弹出后,被称为?

问题描述

我有2 UIViewController A和B从A I pushed B和B具有2 observersreachability。现在,当我弹出 B 并在此之后来到 A 时,如果网络关闭,则调用在 VC B 中编写的方法。我无法推测出来,如果B是已经popped {从{1}}它的方法是怎么叫?

注意 -

  1. 我不具有VC A.林为VC乙任何属性总是 每当创建从VC甲推VC B的新实例。
  2. 我也知道我可以在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:你真的需要展示一些代码......如果不提供任何代码,很难给出更具体的答案。