2012-03-03 125 views
1

我想知道如何将数据传回给AppDelegate。比方说,我有这个计划将数据传递给AppDelegate

AppDelegate - > RootViewController -> FirstViewController -> SecondViewController. 

的SecondViewController有当AppDelegate中applicationWillTerminate方法被调用应保存的数据。我知道我可以使用singleton在应用程序中共享数据,但我不喜欢这种方法。通知在这种情况下似乎不起作用。

你能推荐我什么?

回答

4

这应该得到该委托。

AppDelegate * delegate =(AppDelegate*) [UIApplication sharedApplication].delegate 
[delegate callSomeMethod:someData]; 
+0

你能告诉我一些例子吗? – OhDoh 2012-03-03 13:38:04

+0

现在已更新。 – madmik3 2012-03-03 13:59:00

+0

谢谢。我现在知道了。是否有可能将数据直接传递给applicationDidEnterBackground? – OhDoh 2012-03-03 14:03:28

1

其他建议。在您AppDelegate.h类,你可以创建一个类的方法如下所示:

+ (AppDelegate *)getAppDelegate; 

,然后在AppDelegate.m

+ (AppDelegate *)getAppDelegate 
{ 
    return (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
} 

现在,无论你想就像你可以访问委托(有后导入AppDelagate.h)。

AppDelegate* sharedDelegate = [AppDelegate getAppDelegate]; 

更简洁的方法可能是创建一个类别并将代码放在那里。

现在我的问题是:为什么你需要保存委托内的数据?也许你可以使用单身。欲了解更多信息,请参阅singletons-appdelegates-and-top-level

希望它有帮助。