应用重新打开时执行代码

Ada*_*m H 4 objective-c multitasking ios

我有一个单视图应用程序.当我点击主页按钮并"最小化"应用程序时,我希望能够在用户重新打开时执行代码.

出于某种原因,当我最小化并重新打开应用程序时,viewDidAppear和viewWillAppear不会执行.

有什么建议?

在此先感谢sAdam

Pau*_*l.s 13

您可以在app delegate中执行代码

- (void)applicationDidBecomeActive:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)

或注册以观察UIApplicationDidBecomeActiveNotification通知并执行您的代码作为回应.

应用程序委托中还有通知UIApplicationWillEnterForegroundNotification和方法- (void)applicationWillEnterForeground:(UIApplication *)application.


要挂钩通知,请在适当的位置添加此选项

  [[NSNotificationCenter defaultCenter] addObserver:self 
                                       selector:@selector(didBecomeActive:)
                                           name:UIApplicationDidBecomeActiveNotification
                                         object:nil];
Run Code Online (Sandbox Code Playgroud)

定义相应的方法

- (void)didBecomeActive:(NSNotification *)notification;
{
    // Do some stuff
}
Run Code Online (Sandbox Code Playgroud)

然后不要忘记在适当的时候移除自己的观察者

[[NSNotificationCenter defaultCenter] removeObserver:self];
Run Code Online (Sandbox Code Playgroud)

讨论

你很可能只希望你的viewController响应事件,因为它是当前活动的视图控制器,所以注册通知viewDidLoad的好地方将是一个好的地方,作为一个观察者将你自己删除viewDidUnload

如果您想要运行viewDidAppear:方法中出现的相同逻辑,则将其抽象为另一个方法,viewDidAppear:并且响应通知的方法调用此新方法.