3 つ目の新しい ViewController をプッシュする前に、2 つの View Controller を持つナビゲーション スタックをクリアしたいと考えています。私は次のことをしています:
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 を削除しており、null を示す NSLog に出力しているため、これは非常に奇妙に感じます。