2012-06-08 122 views
0

我有一個奇怪的問題,即在導航堆棧中執行一個方法和我的viewcontrollers時失蹤。在下面的一段代碼中,我在導航堆棧中記錄了viewcontroller的數量。我也將視圖控制器記錄在導航堆棧中。Viewpilotlers從導航堆棧中缺失

NSMutableArray *navigationarray = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers]; 
NSLog(@"Navigation array %@", navigationarray); 
NSLog(@"Navigation array count %d", [navigationarray count]); 

[self.doneButton.target performSelector:self.doneButton.action withObject:self.doneButton.target]; 

NSMutableArray *navigationarrayOne = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers]; 
NSLog(@"Navigation array %@", navigationarrayOne); 
NSLog(@"Navigation array count %d", [navigationarrayOne count]); 

在調用方法之前,導航堆棧有3個viewcontrollers。但是在執行該方法後,導航堆棧中沒有視圖控制器。 我已經在3視圖控制器的dealloc方法中放置了一個斷點,並發現viewcontrollers沒有被釋放。這可能是什麼原因?

當前類的子類ABNewPersonViewController ..和self.doneButton.action在該子類ABPersonViewController

+0

'self.doneButton.action'的方法是什麼樣的? – skram

+0

我編輯了問題 –

+2

navigationController由該堆棧中的所有視圖共享。它們中的任何一個都可以設置navigationController.viewControllers的值。看看你的新視圖控制器是否改變了導航堆棧。 –

回答

0

navigationController通過在該堆棧的所有視圖共用的類執行

- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController 
    didCompleteWithNewPerson:(ABRecordRef)person; 

方法。它們中的任何一個都可以設置navigationController.viewControllers的值。看看你的新視圖控制器是否改變了導航堆棧。