2013-08-19 23 views
0

我的另一個問題是含糊不清,所以我會讓這一個更加清晰。我有一個viewController的表格視圖,當一個單元格被選中時,它將一個數字保存到NSUserDefaults。在我的主視圖控制器,我檢索這個數字,並希望用它更新標籤。我做了一些調試和發現,當我回到我來自的tableView一個主要的viewController,這是發生了什麼順序:的tableView didSelectRow不正常

1)主視圖負荷 2)的tableView電池接頭認可 3)號碼保存到NSUserDefaults的

如何我會改變順序,使主視圖負荷最後運行,這樣當我點擊一個細胞,它改變了我的viewController主要標籤?

這裏是我的didSelectRow方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSString *pointsPath = [[NSString alloc] initWithFormat:@"totalPoints"]; 
NSString *numberFirst = [[NSString alloc] initWithFormat:@"numberFirst"]; 

int totalPoints = [[NSUserDefaults standardUserDefaults] integerForKey: pointsPath]; 
int number = [[NSUserDefaults standardUserDefaults] integerForKey:numberFirst]; 

if([indexPath row] == 1) 
{ 
    NSLog(@"Selected First row"); 
    if(totalPoints < 10) 
    { 
     if (number != 0) 
     { 
      NSLog(@"Did not add a point, but saved"); 
      [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:numberFirst]; 
      [[NSUserDefaults standardUserDefaults] synchronize]; 

     } 
     else if (number == 0) 
     { 
      NSLog(@"Added a Point"); 
      int newPoints = totalPoints + 1; 
      [[NSUserDefaults standardUserDefaults] setInteger:newPoints forKey: pointsPath]; 
      [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:numberFirst]; 
      [[NSUserDefaults standardUserDefaults] synchronize]; 
      int logPoints = [[NSUserDefaults standardUserDefaults]integerForKey:pointsPath]; 
      NSLog(@"Point Count:%i", logPoints); 
     } 


    } 
+0

其言下之意是,你必須檢查代碼,看看目標開發平臺一個貧窮的話題... –

+0

目標開發平臺是iOS的...我不熟悉的Mac開發,但我不知道爲什麼它的重要 – V2Krazy

+2

你做了什麼來調試這個?首先要做的是看看上面的方法是否真的被調用。接下來確定您期望的數據是否顯示在您期望的位置。 (順便說一句,寫一個文件只是爲了將一個數字從一個VC傳遞到另一個VC是有點愚蠢的。) –

回答

0

傢伙,我終於發現了問題,如果任何人有這個問題......你需要確保當用戶選擇一個細胞,它是一個推賽格瑞不是一個模式......這是如此令人沮喪即是如此簡單!!

0

控制器的觀點是按需加載的代碼。所以觸發viewDidLoad的是其他人執行controller.view。如果您已經將視圖控制器推入容器視圖或以其他方式開始呈現它,那麼這將是代理負責。

viewDidLoad,以及在iOS 5及以下viewDidUnload,旨在爲您提供所需的掛鉤,如果您想以編程方式創建視圖的某些部分。

如果你正在做的是試圖說明在控制器不可見時可能已經改變的設置,那麼你應該使用viewWillAppear:。這是確定何時將從不可見轉換爲可見的預期方式。

如果您想要在兩件事之間建立一個完全活躍的鏈接,那麼您應該設置視圖控制器來顯示要監聽NSUserDefaultsDidChangeNotification的號碼,並在發生這種情況時根據需要更新視圖。

+0

它仍然做同樣的事情。我必須在我的tableViewController中調用某些東西嗎?在它從tableView更新NSUserDefaults之前它仍然加載主視圖控制器 – V2Krazy

+0

如果你在'viewDidLoad'和'viewDidAppear:'中放置了一個斷點,那麼是什麼原因導致它們被觸發?與你的'... didSelectRowAtIndexPath:'相關的事情發生在哪裏? – Tommy

+0

viewDidLoad是初始視圖控制器,因此它不會讓我選擇沒有停止的行。當我點擊一行,當它保存號碼,以及視圖控制器加載時,我都會記錄NSLog。主視圖控制器在所有東西保存之前加載,因此標籤不會更新 – V2Krazy