0

그래서 viewcontroller, C에 있고 viewcontroller D (여기는 voteView)로 전환하고 싶다고합시다. 그래서 여기에 내가 무슨 짓을했는지 :UINavigationController issue with 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 것을 의미 목록보기를 인쇄합니다. 이제 theoritically VoteViewController에서 나는 다음과 같이 수행 할 때

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

그것은 목록보기를 인쇄해야하지만 그렇지 않습니다. 왜 이런거야? 나는 또한 뷰 컨트롤러의 수를 확인하고 그것은 단지 2입니다. 왜 다른가? 당신이 인덱스 1에 setViewControllers: 및 액세스 개체를 호출 할 때 요청이 컨트롤러 D (또는 voteView)을보기로 전환하는 경우

답변

1

, 당신이하는 것은 -해야한다 귀하의 질문에 관련

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

, 당신은 보장해야 그 배열에는 두 개의 객체가 있는가? 어떤 방법으로 voteView 넣었습니까 NSLog?