2

当用户将应用程序带到前台时,我想让我的应用程序再次调用 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

4 回答 4

7

你只是说错了。它应该是

[self viewDidAppear:YES];

但是,永远不应该调用这个或任何 viewDidLoad、viewWillAppear 等。将要运行的代码放在viewDidAppear:(BOOL)单独的方法中并调用该方法。

希望能帮助到你!

于 2013-03-01T08:00:42.553 回答
3

你试过了吗[self viewDidAppear:YES][self viewDidAppear:NO]

于 2013-03-01T08:00:40.533 回答
1

使用容器 API 时,使用– beginAppearanceTransition:animated:and – endAppearanceTransition

如果您正在实现自定义容器控制器,请使用此方法告诉孩子它的视图即将出现或消失。不要直接调用 viewWillAppear:、viewWillDisappear:、viewDidAppear: 或 viewDidDisappear:。

调用 addSubView 会自动触发viewWillAppear:viewDidAppear:如果视图的 viewController 是子视图控制器,viewWillAppear:直接调用会触发两次 view will appearance 方法。使用 beginAppearanceTransition:animated: and– endAppearanceTransition` 将抑制自动行为,因此您只会调用一次。

于 2014-08-01T09:15:48.997 回答
0

每次视图可见时都会自动调用该方法viewDidAppear:,无需您自己调用。如果您需要从其他地方运行此方法的一些代码,我建议您添加一个包含这些指令的新方法。viewDidAppear:还将执行可能会影响性能的视图相关操作。所有的方式,如果你需要调用它,你缺少BOOL参数,请参阅文档

于 2013-03-01T08:06:06.157 回答