在ViewController中使用自定义Notification处理applicationWillTerminate
来源:互联网 发布:linux 文本文件忙 编辑:程序博客网 时间:2024/05/22 16:57
Scenario:
希望在app退出时保存当前View中的UITextView的值,以便在app重新打开时显示用户退出前编辑的内容。 在AppDelegate的applicationWillTerminate中已经包含了保存NSUserDefaults的代码,仅需View在app退出时将UITextView的值保存在NSUserDefaults中。
首先考虑的是在ViewController中通过接收处理系统的UIApplicationWillTerminateNotification来保存。于是有
- - (void)saveCurrentValue {
- // saving here
- }
- - (void)viewDidLoad {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveCurrentValue) name:UIApplicationWillTerminateNotification object:nil];
- }
但实际测试中发现并没能保存UITextView的内容,通过NSLog调试才发现,原来在退出时,系统先执行了AppDelegate中的applicationWillTerminate,然后才执行ViewController中的saveCurrentValue代码,所以无法保存内容。
解决方法:
在AppDelegate的applicationWillTerminate中发送自定义的Notification,ViewController中通过接收该自定义Notification处理保存内容的操作,这样就可以保证在AppDelegate的保存 NSUserDefaults操作前先将内容保存。
- #define kMyNotificationTerminate @"MyNotificationTerminate"
- //SampleAppDelegate.m
- - (void)applicationWillTerminate:(UIApplication *)application {
- // post willterminate notification to allow views to save current status
- [[NSNotificationCenter defaultCenter] postNotificationName:kMyNotificationTerminate
- object:nil];
- // Save changes.
- }
- //MySampleViewController.m
- (void)saveCurrentValue {
- // saving value here
- }
- - (void)viewDidLoad {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveCurrentValue) name:kMyNotificationTerminate object:nil];
- }
- - (void)dealloc {
- [[NSNotificationCenter defaultCenter] removeObserver:self name:kMyNotificationTerminate object:[UIApplication sharedApplication]];
- [super dealloc];
- }
- 在ViewController中使用自定义Notification处理applicationWillTerminate
- 在ViewController中使用自定义Notification处理applicationWillTerminate
- 如何在ViewController中使用AppDelegate
- 在代码中使用stroyboard中的ViewController
- 在Android中使用Notification
- Android中Notification的使用以及自定义
- applicationWillTerminate
- 在AppDelegate自定义一个ViewController
- 在ViewController中添加n个子ViewController
- 在Android中使用Notification进行提示
- 在Android中使用Notification进行提示
- 在Android中使用Notification进行提示
- RemoteView 在Notification和AppWidget中使用
- 使用自定义的 Notification
- 使用RemoteViews自定义Notification
- iOS 7:在一般的 ViewController 中使用static cell
- 使用BroadcastReceiver处理Notification
- 如何在自定义的ViewController加载Storyboard里面的ViewController
- VC获取文件大小!
- WQL - EVENT QUERY (CONTINIUING)
- source insight使用教程2
- vc Static背景 颜色
- 10类最急需IT人才:Java开发者居首
- 在ViewController中使用自定义Notification处理applicationWillTerminate
- 堆和栈的区别
- net use 发生系统错误67,找不到网络名
- Setup linux timer for tick/jiffies
- java 中JUint4 中使用注解(annotation)
- PendingIntent
- 新手上路————菜鸟程序错误总结
- js读取xml文件
- Windows Phone UI 风格