在哪里调用方法来重新加载应用程序从后台返回的视图

DGu*_*und 1 iphone cocoa-touch objective-c ios

在导航控制器中的一个视图中,我有一个- (void) loadAlert获取网页内容,解析网页并将相关内容放在网页上的方法UITextView.方法调用位于viewDidAppear:我的视图控制器的部分中.它在视图首次加载时以及导航到视图时完全显示时工作正常.

我还希望在应用程序从后台返回时发生此数据加载.正如许多Stackoverflow帖子和其他来源所示,我将我的方法调用applicationDidBecomeActive::

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    MainViewController *mainView = [[mainViewController alloc] init];
    [mainView loadAlert];
}
Run Code Online (Sandbox Code Playgroud)

但是,当应用程序从后台返回时,视图中不会发生任何事情.我希望UITextView清楚,一个UIActivityIndicatorView旋转,同时从互联网上获取内容,并将新内容加载到UITextView.

我知道正在调用该方法,但视图中没有发生任何事情.我的感觉是,在调用此方法时,视图尚未加载.在哪里可以调用我的方法,以便当应用程序从后台返回时,如果此特定视图是导航控制器中显示的当前视图,它实际上是否会刷新UI?

nsg*_*ver 6

您可以使用UIApplicationWillEnterForegroundNotification或者UIApplicationDidBecomeActiveNotification,在应用程序的任何地方收听这些通知非常有效,您需要将控制器注册到其中一个通知,并使用您的方法显示您想要的任何内容.

     [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(showYourView)
                                                 name:UIApplicationWillEnterForegroundNotification object:nil];

-(void) showYouView(){
 // do your stuff
}
Run Code Online (Sandbox Code Playgroud)

注意

最好的方法是使用UIApplicationWillEnterForegroundNotification,因为它只会在用户从后台到前台运行时运行,另一方面UIApplicationDidBecomeActiveNotification在每次应用程序变为活动时运行