замените вид сверху другим видом в UINavigationController правильно - PullRequest
1 голос
/ 27 марта 2012

У меня есть UINavigationController со следующими контроллерами представления

A -> B (B сверху)

Теперь для некоторых действий в B я хочу заменить B на C(наконец, это должно быть A-> C).

Я попробовал следующее: когда действие происходит в B, я делаю [self.navigationController popViewControllerAnimated:NO];viewWillAppear функции A я проверяю, нужно ли мне немедленно нажимать C. и делаю это.

Проблема в том, что при нажатии C анимация перехода представляет собой всплывающую анимацию (скользит справа налевослева) вместо push.
Похоже, примененная анимация путается с более ранним всплывающим окном.

Как мне это исправить?

Я попытался передать ДА в [self.navigationController popViewControllerAnimated:NO]; выше, но это не решило проблему, ни

1 Ответ

9 голосов
/ 27 марта 2012

Это должно работать:

NSMutableArray *vcs = [[self.navigationController viewControllers] mutableCopy];
NSUInteger lastVcIndex = [vcs count] - 1;
if (lastVcIndex > 0) {
    [vcs replaceObjectAtIndex:lastVcIndex withObject:viewControllerC];
    [self.navigationController setViewControllers:vcs animated:YES];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...