У меня проблема с iPhone-приложением, использующим UINavigationController. Когда я использую pushNavigationController, он работает нормально. IPhone делает свою анимацию, переключаясь на следующий ViewController. Но при использовании массива ViewControllers и метода setViewControllers у него есть сбой в анимации, который может вырасти в отчетливо видимую анимационную ошибку.Использование setViewController от UINavigationController на iPhone не ведет себя правильно
В корневом ViewController вызывается следующий фрагмент. В зависимости от состояния он должен либо переключиться на ViewController1, либо он должен перейти непосредственно в ViewController2. В последнем случае пользователь может вернуться к vc1, а затем к корню.
NSMutableArray* viewControllers = [NSMutableArray arrayWithCapacity:2];
// put us on the stack
[viewControllers addObject:self];
// add first VC
AuthentificationViewController* authentificationViewController =
[[[AuthentificationViewController alloc] initWithNibName:@"AuthentificationViewController" bundle:nil] autorelease];
[viewControllers addObject:authentificationViewController];
if (someCondition == YES)
{
UserAssignmentsListViewController* userAssignmentsListViewController =
[[[UserAssignmentsListViewController alloc] initWithNibName:@"UserAssignmentsOverviewViewController" bundle:nil] autorelease];
[viewControllers addObject:userAssignmentsListViewController];
}
[self.navigationController
setViewControllers:[NSArray arrayWithArray:viewControllers] animated:YES];
Как вы можете видеть, что я буду добавить первый и возможно второй VC в массив, наконец, установив navigationController суммируется с анимацией. Это работает правильно, если я добавляю только первый контроллер. Но в случае, когда анимация должна перейти ко второму контроллеру, заголовок навигационной панели не будет «летать». Вместо этого есть пустой заголовок, пока анимация не будет закончена. И, что еще хуже, если я заменю заголовок навигатора на пользовательскую кнопку, эта кнопка будет отображаться в верхнем левом углу до окончания анимации. Это довольно ошибка отображения.
Я попытался использовать обходное решение с несколькими методами pushViewController, но анимация не выглядит/не кажется правильной. Я хочу, чтобы навигация выполняла свою анимацию так же, как и pushViewController. Единственное различие заключается в том, что я не добавляю VC, но сразу устанавливаю весь стек. Есть ли другой способ обхода здесь, или это можно считать ошибкой структуры? Я думал об использовании только pushNavController для VC2, а затем как-то вставлял VC1 в стек, но это не представляется возможным.
Спасибо за все советы и подсказки. :-)
Технические данные: Я использую iOS 4.2, компилируя для 4.0.
Вы нашли решение? Если да, делитесь. Я столкнулся с аналогичной проблемой анимации. – Pria 2011-06-13 04:55:32