当应用程序关闭或终止时,将 textField 中的数据保存到文件中
Save data from textField into a file when the application has closed or terminated
在我的应用程序中有一个名为“Home
”的视图控制器,带有 textField
。
我在 AppDelegate
文件中阅读了 applicationDidEnterBackground
和 applicationWillTerminate
方法。
我知道如何创建、保存和从文件中读取数据。
我的问题是,如何从“Home
”viewController(存储 textField
数据)到 AppDelegate applicationDidEnterBackground
方法并用这些数据做我所有的事情?
您可以使用 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 post 那个通知,你注册监听它的视图控制器就会触发 "methodToCall" 这可能是你有权做任何事情的方法,它接受一个nsnotification 然后让你访问它携带的 nsdicitonary。
- (void)methodToCall:(NSNotification *)notif{
NSLog(@"methodToCall fired with data %@",[[notif userInfo]valueForKey:@"key"]);}
您可以借助控制器内的这个来完成此操作:
-(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 代替 UIApplication DidEnterBackgroundNotification
在我的应用程序中有一个名为“Home
”的视图控制器,带有 textField
。
我在 AppDelegate
文件中阅读了 applicationDidEnterBackground
和 applicationWillTerminate
方法。
我知道如何创建、保存和从文件中读取数据。
我的问题是,如何从“Home
”viewController(存储 textField
数据)到 AppDelegate applicationDidEnterBackground
方法并用这些数据做我所有的事情?
您可以使用 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 post 那个通知,你注册监听它的视图控制器就会触发 "methodToCall" 这可能是你有权做任何事情的方法,它接受一个nsnotification 然后让你访问它携带的 nsdicitonary。
- (void)methodToCall:(NSNotification *)notif{
NSLog(@"methodToCall fired with data %@",[[notif userInfo]valueForKey:@"key"]);}
您可以借助控制器内的这个来完成此操作:
-(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 代替 UIApplication DidEnterBackgroundNotification