그래서 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
)을보기로 전환하는 경우