从后台打开应用程序时不调用ViewDidAppear [英] ViewDidAppear is not called when opening app from background
问题描述
我有一个View Controller,其值为0(标签),当我从另一个 ViewController
打开View Controller时,我设置了 viewDidAppear
在标签上设置值20。它工作正常,但当我关闭我的应用程序而不是我再次打开我的应用程序,但值不会更改,因为 viewDidLoad
, viewDidAppear
和 viewWillAppear
无法调用任何内容。我打开应用程序时如何打电话。我是否必须从 applicationDidBecomeActive
做任何事情?
I have a View Controller in which my value is 0 (label) and when I open that View Controller from another ViewController
I have set viewDidAppear
to set value 20 on label. It works fine but when I close my app and than again I open my app but the value doesn't change because viewDidLoad
, viewDidAppear
and viewWillAppear
nothing get called. How can I call when I open my app. Do I have to do anything from applicationDidBecomeActive
?
推荐答案
对事件的确切顺序感到好奇,我按如下方式对应用程序进行了检测:(@ Zohaib,您可以使用NSNotificationCenter代码下面回答你的问题)。
Curious about the exact sequence of events, I instrumented an app as follows: (@Zohaib, you can use the NSNotificationCenter code below to answer your question).
// AppDelegate.m
- (void)applicationWillEnterForeground:(UIApplication *)application
{
NSLog(@"app will enter foreground");
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSLog(@"app did become active");
}
// ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"view did load");
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillEnterForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
}
- (void)appDidBecomeActive:(NSNotification *)notification {
NSLog(@"did become active notification");
}
- (void)appWillEnterForeground:(NSNotification *)notification {
NSLog(@"will enter foreground notification");
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"view will appear");
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"view did appear");
}
在发布时,输出如下所示:
At launch, the output looks like this:
2013-04-07 09:31:06.505 myapp[15459:11303] view did load
2013-04-07 09:31:06.507 myapp[15459:11303] view will appear
2013-04-07 09:31:06.511 myapp[15459:11303] app did become active
2013-04-07 09:31:06.512 myapp[15459:11303] did become active notification
2013-04-07 09:31:06.517 myapp[15459:11303] view did appear
输入背景然后重新进入前景:
Enter the background then reenter the foreground:
2013-04-07 09:32:05.923 myapp[15459:11303] app will enter foreground
2013-04-07 09:32:05.924 myapp[15459:11303] will enter foreground notification
2013-04-07 09:32:05.925 myapp[15459:11303] app did become active
2013-04-07 09:32:05.926 myapp[15459:11303] did become active notification
这篇关于从后台打开应用程序时不调用ViewDidAppear的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!