UINavigationController проблема с popToRootViewController - PullRequest
0 голосов
/ 09 октября 2011

Итак, допустим, что я нахожусь в viewcontroller, C, и я хочу перейти к viewcontroller D (который здесь - вот так :iewView).Итак, вот что я сделал:

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 Ответ

1 голос
/ 09 октября 2011

Если ваш запрос на переход к View Controller D (или voteView), вы должны делать-

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

В связи с вашим вопросом, когда вы вызываете setViewControllers: и получаете доступ к объекту по индексу1, вы гарантировали, что массив имеет два объекта?В каком методе voteView вы положили NSLog?

...