我有兩個viewcontroller:MainController和OptionsController。 OptionsController可通過MainController中的按鈕訪問。 在OptionsController中有一些值可以用NSUserDefaults保存。 MainController中需要這些值。 如果我在返回MainController時更改OptionsController中的這些值,它們不會更改,但如果再次啓動MainController,則這些值已正確更改。 看來,當MainController再次變爲活動狀態後,離開OptionsController後,viewDidLoad不再被引發。 如何更新MainController中的數據?更新一個ViewController中的NSUserDefaults數據在其他ViewController中更改
3
A
回答
4
正如rounak所說,viewDidLoad
在視圖控制器的生命中只被調用一次。如果每次顯示視圖控制器時都要執行代碼,請將其放入viewWillAppear
。
NSUserDefaults
是一種相當重量級的方式來傳遞內存對象之間的信息(它寫入磁盤)。如果你不需要跑步之間的持續時間,他建議的其他選項之一會更好。我會建議委託模式或完成塊。
+0
我也需要持久性數據。我會尋找你的跡象。謝謝 – Paolovip
3
對於視圖控制器,只調用一次viewDidLoad。只要OptionsController中的值發生變化,您就可以使用NSNotification,KVO,塊或類似委託模式的類來在MainController中獲取回調。
您可以在viewWillAppear中編寫代碼,每次彈出選項控制器時都會調用該代碼。
+0
好的,謝謝,我會檢查NSNotification,KVO和塊... – Paolovip
相關問題
- 1. 更改NIB中的ViewController
- 2. 如何從其他ViewController中更改AppDelegate中的RootViewController?
- 3. 根據條件在tabbarcontroller中更改viewcontroller
- 4. 如何將第一個簡單的singleview viewController更改爲navigation viewController?
- 5. SWIFT中的NSUserDefaults - 簡介ViewController
- 6. 更改另一個ViewController的int值
- 7. 從UIImage更改ViewController
- 8. ViewController方向更改
- 9. 爲TabBarItem更改ViewController
- 10. 在另一個ViewController中更改TableViewController中的單元格標題
- 11. ViewController更改時在ViewController中保留元素
- 12. 從其他的viewController
- 13. 從其他的viewController
- 14. 自動更改爲下一個ViewController
- 15. 從不在Navstack之上的其他ViewController中推ViewController?
- 16. UIBarButtonItem更改viewController的方向
- 17. 在另一個viewController的tableView中使用的更新屬性
- 18. 更改其他ViewController的標籤欄項目徽章
- 19. TextField在其他ViewController中的代表
- 20. 我的viewController更新問題?
- 21. Swift:從ViewController中的tableView傳遞數據到另一個ViewController
- 22. segue並將數據從viewcontroller傳遞到viewcontroller到另一個viewcontroller
- 23. 如何更新不同ViewController中的數據並將其顯示在父級?
- 24. 僅在一個ViewController中更改導航欄屬性
- 25. 從UIViewController更改爲ViewController
- 26. ViewController異常更改大小
- 27. 不能從UIAlertView更改viewcontroller
- 28. 從子ViewController報告更改
- 29. 其他更改時更新一個數據值
- 30. 如何處理其他ViewController視圖中的ViewController?
給出的答案提供了您需要的答案。只要搜索如何使用NSNotification。如果有幫助,你應該投票回答。這會鼓勵其他人在未來幫助你。 –
你是對的,這兩個答案都給了我一些好主意,但不幸的是我還不能投票,因爲我的名譽積分少於15分。 – Paolovip
好的 - 我只是讓你超過了限度。投票。順便說一句,接受最有用的答案會給你兩個額外的點,所以如果其中一個答案是非常有用的,點擊綠色的複選標記。搜索SO如何使用NSNotifications,你就在路上。 –