Я использую код, очень похожий на следующий:
- (void)flipToViewController:(UIViewController*)targetViewController
transition:(UIViewAnimationTransition)transition
{if (targetViewController) {[[[self activeViewController] view] setUserInteractionEnabled: NO];
// force the view to be instantiated (loadView/layoutSubviews)
[[targetViewController view] setHidden:NO];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8f];
[UIView setAnimationTransition:transition forView:self.view cache:YES];
[targetViewController viewWillAppear:YES];
[[self activeViewController] viewWillDisappear:YES];
[[[self activeViewController] view] removeFromSuperview];
[[self view] addSubview:[targetViewController view]];
[[self activeViewController] viewDidDisappear:YES];
[targetViewController viewDidAppear:YES];
[[targetViewController view] setUserInteractionEnabled:YES];
[UIView commitAnimations];
[self setActiveViewController:targetViewController];
}
}
Я использую флип-переход, однако, когда мой targetViewController переворачивается, изображение не инициализируется должным образом.UISegmentedControl выглядит странно, и одно подпредставление находится в неправильной позиции.
Только после завершения анимации все попадает в правильное местоположение.
Я выполняю все свои настройки подпредставления в viewWillAppear (не viewDidAppear), поэтому я не понимаю, почему он не был инициализирован во времени.
Есть предложения?
Я также заметил (после отладки), что viewWillAppear вызывается перед методом viewDidLoad?Зачем это делать?