0

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 に出力しているため、これは非常に奇妙に感じます。

4

2 に答える 2

3
DetailViewController *detailView = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];    
NSMutableArray *viewControllerArray = [self.navigationController.viewControllers mutableCopy];
[viewControllerArray removeAllObjects];
[viewControllerArray addObject:detailView];
[self.navigationController setViewControllers:viewControllerArray animated:YES];

これを試して。

于 2012-12-04T13:16:15.657 に答える
1

3 番目のビューをプッシュする前に 1 つのビュー コントローラーを削除し、3 番目のビュー コントローラーから 2 番目のビュー コントローラーを削除してみてください。ループを使用して複数のviewControllerを削除すると、エラーが発生することがあります。

于 2012-12-04T11:24:31.880 に答える