[iOS]:检测从另一个外部应用程序返回后视图控制器何时出现

Posted

技术标签:

【中文标题】[iOS]:检测从另一个外部应用程序返回后视图控制器何时出现【英文标题】:[iOS]: detect when view controller appears after back from another external app 【发布时间】:2015-12-18 18:40:26 【问题描述】:

这是我的场景:

我有一个视图控制器,当以这种方式按下按钮时,用户可以在其中转到另一个应用程序(设置):

    -(void) goToSettings
       [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
    

所以,这段代码打开了应用程序的屏幕设置,它在左上角显示了一个这样的图例:

返回我的应用程序

我希望检测用户按下按钮的视图控制器何时再次处于活动状态。我知道您可以在委托文件中使用此方法检测应用何时再次处于活动状态

- (void)applicationWillEnterForeground:(UIApplication *)application

但我需要特别检测视图控制器。我试过-(void)viewWillAppear:(BOOL)animated,但它不起作用。有人对此有任何想法吗?

【问题讨论】:

【参考方案1】:

设置您的视图控制器以侦听UIApplicationDidBecomeActiveNotification 通知。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(becomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];

然后添加becomeActive:方法:

- (void)becomeActive:(NSNotification *)notification 
    // App is active again - do something useful

并确保在适当的位置移除观察者。

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];

当然,您的应用可能会出于多种原因再次激活,而不仅仅是从“设置”应用返回。

【讨论】:

以上是关于[iOS]:检测从另一个外部应用程序返回后视图控制器何时出现的主要内容,如果未能解决你的问题,请参考以下文章

使用标签栏从另一个视图返回时如何重新加载视图控制器

从另一个选项卡返回后视图控制器变黑

IOS 从另一个视图访问一个视图

如何通过iOS Objective C中的appDelegate从另一个视图控制器重新加载表视图

从另一个视图控制器中取消选择按钮

从另一个视图重新加载表视图