如何防止在弹出 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
如何调用它的方法?
注-
- 我在 VC A 中没有任何 属性 用于 VC B。我总是
每当从 VC A.
推送时创建 VC B 的新实例
- 我也知道我可以在 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 : 你真的需要展示一些代码......如果你不提供任何代码就很难给出更具体的答案。
我有 2 UIViewController
A 和 B。从 A I pushed
B 和 B 有 2 observers
for reachability
。现在,当我弹出 B 并在此之后到达 A 时,如果网络关闭,则调用 VC B 中编写的方法。我无法弄清楚如果 B 已经是 popped
来自 navigation stack
如何调用它的方法?
注-
- 我在 VC A 中没有任何 属性 用于 VC B。我总是 每当从 VC A. 推送时创建 VC B 的新实例
- 我也知道我可以在 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 : 你真的需要展示一些代码......如果你不提供任何代码就很难给出更具体的答案。