0

したがって、私は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つです。なぜ違うのでしょうか?

4

1 に答える 1

1

View Controller D(またはvoteView)に移行するように依頼する場合は、次のことを行う必要があります-

[self.navigationController pushViewController:voteView animated:YES];

質問に関連して、setViewControllers:インデックス1のオブジェクトを呼び出してアクセスするときに、配列に2つのオブジェクトがあることを確認しましたか?どの方法で?voteViewを入れましたNSLogか?

于 2011-10-09T06:12:04.633 に答える