UINavigationController проблема с popToRootViewController
Итак, допустим, что я нахожусь в viewcontroller, C, и я хочу перейти к viewcontroller D (который здесь - вот так: viewView). Итак, вот что я сделал:
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. Почему это отличается?
1 ответ
Если ваш запрос о переходе на View Controller D (или voteView
), вы должны делать-
[self.navigationController pushViewController:voteView animated:YES];
Связанные с вашим вопросом, когда вы звоните setViewControllers:
и доступ к объекту по индексу 1, вы гарантировали, что массив имеет два объекта? В каком методе voteView
ты положил NSLog
?