在推送第三个新 ViewController 之前,我想清除具有两个视图控制器的导航堆栈。我正在执行以下操作:
NSMutableArray *viewControllerArray=[[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];
for (int i = 0; i < [viewControllerArray count]; i++) {
[viewControllerArray removeObjectAtIndex:i];
//here the [viewControllerArray count] is 2,but loop is iterated only once.
}
self.navigationController.viewControllers=viewControllerArray;
NSLog(@"View Controller Array %@",[self.navigationController viewControllers])
//This will print null which I assume is correct.
然后我按如下方式推送新的 ViewController:
DetailViewController *detailView=[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[self.navigationController pushViewController:detailView animated:YES];
但是我的新视图没有被推送,而是显示导航堆栈中的最顶层视图。我觉得这很奇怪,因为,我已经删除了 ViewControllers 并在 NSLog 中打印它,它显示为 null。