我制作一个测试应用并在设备上运行它。在第一次发布时,一切正常。然后我按主页按钮退出,然后按应用程序图标。似乎这次没有调用viewWillAppear。根据我的理解,每次视图显示在屏幕上时都会调用viewWillAppear,无论是由关闭视图控制器还是按下主页按钮然后重新启动它。
答案 0 :(得分:6)
在viewDidLoad()方法中添加它
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(onResume)
name:UIApplicationDidBecomeActiveNotification
object:nil];
并执行在onResume方法中应用程序再次变为活动状态时需要运行的代码。
答案 1 :(得分:4)
根据文件:
在即将添加接收者视图之前调用此方法 到视图层次结构之前和配置任何动画之前 显示视图。您可以覆盖此方法以执行自定义任务 与显示视图相关联。例如,您可以使用它 将状态栏的方向或样式更改为的方法 与所呈现视图的方向或样式协调。 如果重写此方法,则必须在您的某个位置调用super 实施
要获得通知,当您的申请恢复时,您应该使用:
- (void)applicationDidBecomeActive:(UIApplication *)application
此方法在AppDelegate.m
答案 2 :(得分:0)
这是Swift的语法:
NotificationCenter.default.addObserver(self,
selector: #selector(YourViewController.onResume),
name: Notification.Name.UIApplicationDidBecomeActive,
object: nil)
专业提示:与任何观察者一样,您需要确保进行订阅(如上所示),并在不再需要通知时取消订阅,如下所示:
NotificationCenter.default.removeObserver(self)
在我看来,在viewWillAppear
进行订阅和在viewWillDisappear
进行退订是很有意义的,但这完全取决于您应用程序的需求。