当用户将应用程序带到前台时,我想让我的应用程序再次调用viewDidAppear。
- (void)appReturnsActive{
//THIS IS THE BIT THAT DOESNT WORK, BUT [self.viewDidLoad] DOES WORK
[self.viewDidAppear];
}
我正在我的viewDidAppear方法中创建appReturnsActive。效果很好:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appReturnsActive) name:UIApplicationDidBecomeActiveNotification
object:nil];
我可以做self.viewDidLoad,但我不能选择viewDidAppear。有谁知道我怎么可能让这个工作?
谢谢!
答案 0 :(得分:7)
你只是称错了。它应该是
[self viewDidAppear:YES];
但是,永远不应该调用this或viewDidLoad,viewWillAppear等任何一个。将您想要在viewDidAppear:(BOOL)
中运行的代码放在一个单独的方法中并调用该方法。
答案 1 :(得分:3)
您是否尝试过[self viewDidAppear:YES]
或[self viewDidAppear:NO]
?
答案 2 :(得分:1)
使用包含API时,请使用– beginAppearanceTransition:animated:
和– endAppearanceTransition
:
如果要实现自定义容器控制器,请使用此方法告诉孩子其视图将要显示或消失。不要直接调用viewWillAppear:,viewWillDisappear:,viewDidAppear:或viewDidDisappear:
如果视图的viewController是子视图控制器,则调用addSubView将自动触发viewWillAppear:
和viewDidAppear:
,因此直接调用viewWillAppear:
将触发视图将外观方法两次。使用beginAppearanceTransition:animated:and
- endAppearanceTransition`将禁止自动行为,因此您只能调用一次。
答案 3 :(得分:0)
每次视图可见时,都会自动调用方法viewDidAppear:
,无需自己调用。如果你有一些关于这个方法的代码需要从其他地方运行,我建议你添加一个包含这些指令的新方法。 viewDidAppear:
还将执行可能会影响性能的视图相关操作。如果您需要调用它,所有方法都缺少BOOL
参数,请参阅documentation。