我在xcode 4.3.1中制作了一个简单的单视图程序。我希望视图可以执行不同的操作,具体取决于它是在第一次启动应用程序时还是在恢复时加载。
有谁能告诉我这样做的最佳方法?
appDelegate没有引用我的viewController所以我不确定我是否可以从我的AppDelegate didFinishLaunchingWithOptions方法中传递一个变量。
当ViewController似乎没有在任何地方实例化时,AppDelegate如何与ViewController通信?
谢谢!
答案 0 :(得分:1)
您可以使用NSNotificationCenter了解应用程序何时进入前台,然后您可以注册各个VC以关注该事件。例如:
- (void)loadView {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillEnterForeground)
name:UIApplicationWillEnterForegroundNotification
object:nil];
}
VC在loadView(或任何其他方法)期间注册。然后当应用程序进入前台时,方法
- (void)applicationWillEnterForeground;
被调用。只需记住在dealloc或viewDidUnload中取消注册。
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
答案 1 :(得分:0)
您可以使用[application:didFinishLaunchingWithOptions:]来确定您是否刚刚开始。它只在您启动时调用一次。你可以将它与设置一些标志和 [applicationWillEnterForeground:(UIApplication *)application]确定您是启动还是只是返回前台。