提问人:Rahul Vyas 提问时间:1/7/2021 最后编辑:Rahul Vyas 更新时间:1/8/2021 访问量:63
如何防止UIViewController弹出后调用通知观察器?
How to prevent notitifcation observer from being called after UIViewController is popped?
问:
我有 2 个 A 和 B。从 A、I、B 和 B 有 2 个。现在,当我弹出 B 并在此之后来到 A 时,如果 Network 关闭,则调用在 VC B 中编写的方法。我无法弄清楚,如果 B 已经来自它的方法是如何调用的?UIViewController
pushed
observers
reachability
popped
navigation stack
注意-
- 我在 VC A 中没有 VC B 的任何属性。 每当从 VC A 推送时,都会创建一个 VC B 的新实例。
- 我也知道我可以删除viewWillDisappear中的观察者,但我仍然想 知道为什么即使在弹出 VC B 后仍会调用观察者。
答:
1赞
skaak
1/8/2021
#1
如果您使用一个标志,您可以在其他相关位置打开和关闭,例如,根据您呈现它的方式应用什么,怎么样?然后,您可以在观察者触发时标记您的操作。这是一个大纲。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:你真的需要显示一些代码......如果不提供任何代码,很难给出更具体的答案。
评论