Viewcontrollers从导航堆栈中丢失

时间:2012-06-08 12:52:08

标签: iphone ios uiviewcontroller uinavigationcontroller

我遇到一个奇怪的问题,当执行一个方法时,导航堆栈中的viewcontrollers会丢失。在下面的代码中,我在导航堆栈中记录了viewcontroller计数。我也在导航堆栈中记录viewcontrollers。

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。但是在执行该方法之后,导航堆栈中没有viewcontrollers。 我在3个viewcontrollers的dealloc方法中放了一个断点,发现viewcontrollers没有被释放。这可能是什么原因?

当前的类子类ABNewPersonViewController ..和self.doneButton.action执行

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

的类中的

方法

1 个答案:

答案 0 :(得分:1)

navigationController由该堆栈中的所有视图共享。其中任何一个都可以设置navigationController.viewControllers的值。查看您的新视图控制器是否正在更改导航堆栈。