你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發那些事--iOS6 UI狀態保持和恢復

iOS開發那些事--iOS6 UI狀態保持和恢復

編輯:IOS開發綜合
iOS設計規范中要求,當應用退出的時候(包括被終止運行時候),畫面中UI元素狀態需要保持的,當再次進來的時候看狀態與退出是一樣的。iOS6之後蘋果提供以下API使得UI狀態保持和恢復變得很容易了。  在iOS6中我們可以在3地方實現狀態保持和恢復:   應用程序委托對象   視圖控制器   自定義視圖   為了演示這個功能實現,我們把基於故事板的HelloWorld工程改造一下,在畫面中添加一個文本框   1   用戶在文本框中輸入一些內容,應用程序退出並且終止後再次進來的時候,文本框中還會保持原來輸入的內容。然後在IB的Scene中選中View Controller,打開右邊的標識檢查器,設置Restoration ID(恢復標識)為viewController。   2   恢復標識是iOS6為了實現UI狀態保持和恢復添加的設置項目。我們還需要在應用程序委托對象AppDelegate代碼部分做一些修改,添加的代碼如下:   [cpp]  -(BOOL) application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder      {      return YES;      }             -(BOOL) application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder      {      return YES;      }             - (void)application:(UIApplication *)application willEncodeRestorableStateWithCoder:(NSCoder *)coder      {      [coder encodeFloat:2.0 forKey:@"Version"];      }             - (void)application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder      {      float lastVer = [coder decodeFloatForKey:@"Version"];      NSLog(@”lastVer = %f”,lastVer);      }     -(BOOL) application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder   {   return YES;   }       -(BOOL) application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder   {   return YES;   }       - (void)application:(UIApplication *)application willEncodeRestorableStateWithCoder:(NSCoder *)coder www.2cto.com {   [coder encodeFloat:2.0 forKey:@"Version"];   }       - (void)application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder   {   float lastVer = [coder decodeFloatForKey:@"Version"];   NSLog(@”lastVer = %f”,lastVer);   }     其中application:shouldSaveApplicationState:在應用退出的時候調用,負責控制是否允許保存狀態,返回YES情況是可以保存,NO是不保存。   application:shouldRestoreApplicationState:是應用啟動時候調用,負責控制是否恢復上次退出的時候的狀態,返回YES情況是可以恢復,NO是不恢復。   application:willEncodeRestorableStateWithCoder:方法是保存時候調用,在這個方法中實現UI狀態或數據的保存,其中[coder encodeFloat:2.0 forKey:@"Version"]是保存簡單數據。   application:didDecodeRestorableStateWithCoder:方法是恢復時候調用,在這個方法中實現UI狀態或數據的恢復,其中[coder decodeFloatForKey:@"Version"]語句是恢復上次保存的數據。   要想實現具體畫面中控件的保持和恢復,還需要在它視圖控制器中添加一些代碼,ViewController.m中添加的代碼如下:   [cpp]  -(void)encodeRestorableStateWithCoder:(NSCoder *)coder      {      [super encodeRestorableStateWithCoder:coder];      [coder encodeObject:self.txtField.text forKey:kSaveKey];      }             -(void)decodeRestorableStateWithCoder:(NSCoder *)coder      {      [super decodeRestorableStateWithCoder:coder];      self.txtField.text = [coder decodeObjectForKey:kSaveKey];      }     -(void)encodeRestorableStateWithCoder:(NSCoder *)coder   {   [super encodeRestorableStateWithCoder:coder];   [coder encodeObject:self.txtField.text forKey:kSaveKey];   }       -(void)decodeRestorableStateWithCoder:(NSCoder *)coder   {   [super decodeRestorableStateWithCoder:coder];   self.txtField.text = [coder decodeObjectForKey:kSaveKey];   }     在iOS6之後視圖控制器都添加了兩個:encodeRestorableStateWithCoder:和decodeRestorableStateWithCoder:用來實現該控制器中的控件或數據的保存和恢復。其中encodeRestorableStateWithCoder: 方法是在保存時候調用,[coder encodeObject:self.txtField.text forKey:kSaveKey]語句是按照指定的鍵保存文本框的內容,decodeRestorableStateWithCoder:方法是在恢復時候調用,[coder decodeObjectForKey:kSaveKey]是恢復文本框內容時候調用,保存和恢復事實上就是向一個歸檔文件中編碼和解碼的過程。    
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved