0

因此,讓我說我在viewcontroller,C和我想轉換到viewcontroller D(這是voteView這裏)。因此,這裏是我所做的:UINavigationController與popToRootViewController問題

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]; 

運行上面的代碼,它打印列表視圖,這意味着RootViewController的是ListViewController。現在在VoteViewController,當我做如下:

if ([[viewControllers objectAtIndex:0] isKindOfClass:[ListViewController class]]){ 
      NSLog(@"LIST VIEW"); 

它應該打印列表視圖,但它沒有。爲什麼是這樣?我也檢查了視圖控制器的數量,它只有2個。爲什麼它不同?

回答

1

如果你問的是過渡到視圖控制器d(或voteView),你應該doing-

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

您問題相關的,當你調用setViewControllers:和訪問對象在索引1,你有沒有保證該數組有兩個對象?在voteView的哪種方法中,您是否將NSLog