したがって、私はviewcontroller Cにいて、viewcontroller D(ここではvoteView)に移行したいとしましょう。だからここに私がしたことがあります:
VoteViewController * voteView = [[VoteViewController alloc] init];
voteView.voteInfo = [array objectAtIndex:0];
NSArray * viewControllers = [self.navigationController viewControllers];
if ([[viewControllers objectAtIndex:0] isKindOfClass:[ListViewController class]]){
NSLog(@"LIST VIEW");
} else if ([[viewControllers objectAtIndex:0] isKindOfClass:[SpotListingViewController class]]){
NSLog(@"SPOT LISTING");
}
[self.navigationController setViewControllers:[NSArray arrayWithObjects:[viewControllers objectAtIndex:0], [viewControllers objectAtIndex:1], voteView, nil]];
[voteView release];
上記のコードを実行すると、LIST VIEW が出力されます。これは、RootViewController が ListViewController であることを意味します。以下のようにすると、理論的には VoteViewController になります。
if ([[viewControllers objectAtIndex:0] isKindOfClass:[ListViewController class]]){
NSLog(@"LIST VIEW");
LIST VIEW を出力するはずですが、そうではありません。どうしてこれなの?ビューコントローラーのカウントも確認しましたが、たったの2つです。なぜ違うのでしょうか?