当App来到前台时,调用self.viewDidAppear

时间:2013-03-01 07:57:06

标签: iphone ios objective-c xcode

当用户将应用程序带到前台时,我想让我的应用程序再次调用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。有谁知道我怎么可能让这个工作?

谢谢!

4 个答案:

答案 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