狀態(tài)復(fù)原
英文術(shù)語: State Restoration
蘋果官方示例
應(yīng)用場景: 當(dāng)應(yīng)用退入后臺(tái), 把視圖控制器的層級(jí)保存, 如果因?yàn)閮?nèi)存等問題, 應(yīng)用被關(guān)閉了, 那么下次打開應(yīng)用的時(shí)候, 按照保存的恢復(fù), 讓用戶看上去app仿佛從來沒有被關(guān)閉一樣.
需要實(shí)現(xiàn)的方法:
- 在AppDelegate里
func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool {
return true
}
func application(application: UIApplication, shouldSaveApplicationState coder: NSCoder) -> Bool {
return true
}
對(duì)所有的viewController, 所有的view 設(shè)置其Restoration ID, 如果不是使用設(shè)計(jì)器而是用代碼實(shí)現(xiàn)的話, 需要實(shí)現(xiàn)UIViewControllerRestoration協(xié)議
在每個(gè)viewController里實(shí)現(xiàn)方法:
override func encodeRestorableStateWithCoder(coder: NSCoder)
override func decodeRestorableStateWithCoder(coder: NSCoder)
這個(gè)方法會(huì)在viewDidLoad方法之后調(diào)用, 所以怎么用, 你懂的.
調(diào)試方法
- 在Xcode里運(yùn)行app
- 在模擬器/設(shè)備里用home鍵切回桌面
- 在Xcode里stop運(yùn)行
- 在Xode里面run