2013-05-05 22 views
0

我試圖使用NSUserDefaults類來保存一堆文本標籤信息。具體來說,我有一個按鈕和一個標籤的視圖。點擊按鈕後,用戶使用「模態」連接將用戶轉到另一個視圖。在第二個視圖中,用戶使用滑塊設置值。單擊按鈕後,單個按鈕也會切換回第一個視圖,並使用「模態」連接。我想插入一段代碼,以便當用戶使用第二個視圖上的滑塊並單擊該按鈕時,它將第一個視圖上的文本標籤更新爲滑塊的值。無法獲取NSUserDefaults存儲方法來適當地更新文本標籤iOS

這是我在第二視圖放按鈕方法下的代碼:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:@"myValue" [email protected]"myKey"]; 
[defaults synchronize]; 
_textLabelOnFirstView.text = [defaults stringForKey:@"myKey"]; 

另外,根據「viewDidLoad中」的方法相同的視圖控制器,我把下面的代碼:

NSUserDefaults *defaults = [NsUserDefaults standardUserDefaults]; 
_textLabelOnFirstView.text = [defaults stringsForKey:@myKey"]; 

但是,這是會發生什麼:在我打開第一個視圖後,我單擊按鈕以轉到第二個視圖。在第二個視圖中,我將滑塊滑動到100,然後單擊按鈕。該按鈕將我帶回第一個視圖,但標籤從未更新,並且不會顯示100.如果關閉應用程序並重新打開,標籤仍然是錯誤的。然而!如果我點擊按鈕轉到第二個視圖,然後點擊第二個視圖的按鈕返回到第一個視圖(即使不調整滑塊),我現在在文本標籤中看到100的值。

任何人都可以請建議如何更改我的代碼,以便用戶從第二個視圖轉換回第一個視圖時,第一個視圖的文本標籤用滑塊的值更新?謝謝!

+0

在沒有看到代碼的其餘部分。如果你只更新viewDidLoad中的標籤,那麼當前的行爲是預期的。 ViewDidLoad只會被調用一次,您可能正在尋找viewDidAppear,每次視圖完成到屏幕的轉換時都會調用它。我還建議viewWillAprear,以便在轉換髮生之前更新該值。 – 2013-05-06 02:03:18

+0

非常感謝馬特,我不知道這兩種方法,這兩種方法都解決了我的問題! – jake9115 2013-05-06 03:12:09

回答

0

馬特摹指出,使用viewWillAppear中或ViewDidAppear而不是viewDidLoad中正確地解決我的問題,通過每一次的視圖中顯示被調用,而不是它的第一個實例

相關問題