在我的应用程序中有一个名为" Home
"的视图控制器。使用textField
。
我在applicationDidEnterBackground
文件中了解了applicationWillTerminate
和AppDelegate
方法。
我知道如何创建,保存,读取文件中的数据。
我的问题是,如何从" NSString
"中获取Home
。 viewController(那里存储了textField
数据)到AppDelegate applicationDidEnterBackground
方法并用那些数据做我所有的事情?
答案 0 :(得分:1)
您可以使用NSNotificationCenter在视图控制器中注册一个通知,只要您输入applicationDidEnterBackground或applicationWillTerminate,就会触发该通知。
因此,在这些方法中,您可以添加类似
的内容[[NSNotificationCenter defaultCenter] postNotificationName:@"someDescriptiveName" object:self userInfo:@{@"key" : @"value"}];
userInfo需要一个NSDicitonary,你可以在那里传递任何类型的对象,在你的情况下你不需要从这里传递任何东西回到你的viewcontroller,你只是用它来让你的视图控制器知道应用程序正在关闭。
在您的视图控制器中,您将使用类似的内容注册该通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodToCall:) name:@"someDescriptiveName" object:nil];
然后每当你的appDelegate发布该通知时,你的视图控制器被注册以监听它会触发“methodToCall”,这可能是你正确做任何事情的方法,它会进行通知,然后让你访问nsdicitonary它的携带。
- (void)methodToCall:(NSNotification *)notif{
NSLog(@"methodToCall fired with data %@",[[notif userInfo]valueForKey:@"key"]);}
答案 1 :(得分:0)
您可以在控制器内部的帮助下完成此操作:
-(id)init
{
if((self = [super init]))
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appDidEnterBackground:)
name:UIApplicationDidEnterBackgroundNotification
object:[UIApplication sharedApplication]];
}
return self;
}
-(void)appDidEnterBackground:(NSNotification *)note {
NSLog(@"appDidEnterBackground");
}
您也可以使用applicationWillTerminate代替UIApplicationDidEnterBackgroundNotification