2015-07-04 41 views
3

我有兩個viewcontroller:MainController和OptionsController。 OptionsController可通過MainController中的按鈕訪問。 在OptionsController中有一些值可以用NSUserDefaults保存。 MainController中需要這些值。 如果我在返回MainController時更改OptionsController中的這些值,它們不會更改,但如果再次啓動MainController,則這些值已正確更改。 看來,當MainController再次變爲活動狀態後,離開OptionsController後,viewDidLoad不再被引發。 如何更新MainController中的數據?更新一個ViewController中的NSUserDefaults數據在其他ViewController中更改

+2

給出的答案提供了您需要的答案。只要搜索如何使用NSNotification。如果有幫助,你應該投票回答。這會鼓勵其他人在未來幫助你。 –

+0

你是對的,這兩個答案都給了我一些好主意,但不幸的是我還不能投票,因爲我的名譽積分少於15分。 – Paolovip

+1

好的 - 我只是讓你超過了限度。投票。順便說一句,接受最有用的答案會給你兩個額外的點,所以如果其中一個答案是非常有用的,點擊綠色的複選標記。搜索SO如何使用NSNotifications,你就在路上。 –

回答

4

正如rounak所說,viewDidLoad在視圖控制器的生命中只被調用一次。如果每次顯示視圖控制器時都要執行代碼,請將其放入viewWillAppear

NSUserDefaults是一種相當重量級的方式來傳遞內存對象之間的信息(它寫入磁盤)。如果你不需要跑步之間的持續時間,他建議的其他選項之一會更好。我會建議委託模式或完成塊。

+0

我也需要持久性數據。我會尋找你的跡象。謝謝 – Paolovip

3

對於視圖控制器,只調用一次viewDidLoad。只要OptionsController中的值發生變化,您就可以使用NSNotification,KVO,塊或類似委託模式的類來在MainController中獲取回調。

您可以在viewWillAppear中編寫代碼,每次彈出選項控制器時都會調用該代碼。

+0

好的,謝謝,我會檢查NSNotification,KVO和塊... – Paolovip

相關問題