我通过JSON从服务器上获取数据并将其显示在标签上。 我在viewDidLoad中添加了该方法。
我想在用户再次打开应用时刷新数据。目前,即使我在模拟器中杀死应用程序并再次启动应用程序,它也不会刷新。
我尝试了viewDidAppear方法,但由于某种原因它没有被执行。
-(void)viewDidAppear{
NSLog(@"Called viewDidAppear");
}
这从未被调用过。我试图最小化应用程序,但它没有用。
答案 0 :(得分:5)
您可以收听通知并做出适当的回应。尝试使用这些并确定适用于您的预期工作流程的内容。
UIApplicationDidBecomeActiveNotification
UIApplicationWillEnterForegroundNotification
您可以像这样使用回复通知。
[[NSNotificationCenter defaultCenter] addObserverForName: UIApplicationDidBecomeActiveNotification object: nil queue: [NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
// LOAD JSON
}];
答案 1 :(得分:2)
我遵循了本教程 - http://leejon.es/notifying-a-viewcontroller-with-uiapplicationdidbecomeactivenotification/
首先,附加到目标视图控制器的viewWillAppear方法中的通知:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector( appActivated: )
name: UIApplicationDidBecomeActiveNotification
object: nil];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self ];
}
- (void)appActivated:(NSNotification *)note
{
[self update];
}
答案 2 :(得分:1)
viewDidAppear:方法采用bool参数,显示视图时显示的是您缺少的动画。你还必须调用超类的实现:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear: animated];
NSLog(@"Called viewDidAppear");
}
答案 3 :(得分:1)
在您的app delegate实现中,有一个名为:
的方法- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
每次启动应用程序时都会调用此方法,因此我认为它符合您的需求。如果你把代码放在这里,它应该可以工作。
此外,请注意,您不应在此处执行同步调用,因为您将延迟应用启动。
修改强> 只有在应用程序启动时才会调用此方法。您可以将代码放在方法中,然后从应用程序didFinishLaunchingWithOptions调用它,然后从方法中调用它:
- (void)applicationWillEnterForeground:(UIApplication *)application;
当应用程序进入前台时,将调用此方法,但不会在首次启动后调用此方法,因此请注意。
我还认为你应该从apple开发者页面检查UIApplicationDelegate方法:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html 另外,查看应用程序状态更改: http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html