2011-11-21 57 views
2

我有兩個使用導航欄的viewController。第一個viewController顯示我在第二個viewController上更改的一些數據。所以如果我加載第二個viewController,後退按鈕出現在導航欄中,我可以更改我的值(他們存儲,我用調試器)。我的問題是,在點擊backButton來到我的第一個控制器之後,它並不稱之爲viewDidLoad方法。很顯然,當沒有調用該函數時,根本沒有更新值。ViewController在加載後不會更新

在第一次啓動時,viewDidLoad方法被調用並執行我想要的操作。在viewControllers之間來回之後,該方法不會再被調用。

任何解決方案?

謝謝!

編輯:

解決

我不想刪除我的問題,也許有人需要這個太:

這種方法被稱爲每次出現的觀點的時候,它可能是不默認定義爲:

-(void)viewDidAppear:(BOOL)animated 
{ 
NSLog(@"View appeared."); 
} 

回答

2

但是更新代碼(如[[self view] setNeedsDisplay];)在viewWillAppear

要說清楚:您的視圖加載時會調用viewDidLoad。這是在第一次顯示視圖時發生的。當你然後導航到下一個視圖時,第一個視圖可以(取決於你的代碼)仍然被加載。因此,當你回到那個視圖viewDidLoad將不會被調用,因爲視圖仍然存在。

但每次顯示視圖時(例如,當您導航回該視圖時),將調用方法viewWillAppearviewDidAppear

希望有所幫助。

+0

謝謝。我不明白-1雖然... – DAS

+1

這不是我...... – dasdom

1

ViewDidLoad當有視圖控制器分配 - 初始化發生時,方法將被調用。在導航控制器中後退的情況下,它不會創建任何新的視圖控制器,它將重新使用來自導航堆棧的先前引用。因此viewDidLoad不會被調用。因爲你的視圖控制器已經在內存堆棧中。所以它只會使視圖重新出現在窗口上,它將分別稱爲viewWillAppear

相關問題