Ваш showInfo:
метод находится на правильном пути, вроде как, но, думаю, не сработает. Вот пример кода, который у меня есть в приложении, которое, как мне кажется, делает то, что вам нужно:
PersonDetailViewController *pvc = [[PersonDetailViewController alloc]
initWithNibName:@"PersonDetailView" bundle:nil];
UIView *container = self.parentViewController.tabBarController.view;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
forView:container cache:YES];
[container addSubview:pvc.view];
[pvc viewWillAppear:YES];
[self viewWillDisappear:YES];
[UIView commitAnimations];
Смысл всего этого в том, что вы должны предоставить больше информации о переходе, который вы надеетесь достичь. Существует ряд методов класса UIView
(как показано здесь), которые имеют дело с настройкой переходов вида и других анимаций на основе вида.
Так, что это делает? Код добавляет новое представление контроллера представления (pvc.view) как подпредставление «контейнера». В этом приложении представление «контейнер» - это представление, которое переворачивается, когда новое представление (pvc.view) переворачивается.
Также важно называть как новое представление viewWillAppear:
, так и старое представление viewWillDisapear:
, чтобы все правильные вещи, которые вы ожидаете, произойдут, когда представления приходят и уходят, происходят. [Этот рецепт может считаться "старой школой" некоторыми. В дни iPhone OS 2.x (тогда это еще не называлось iOS), шаблон Utility имел код, подобный этому, вызывая viewWillAppear и viewWillDisappear и т. Д. Он все еще работает сегодня, fwiw. И код, показанный здесь, находится в приложении доставки в магазине приложений, так что он все еще кошерный, так сказать. :-)]
Стоит отметить, что в PersonDetailViewController (в этом примере) есть аналогичный код, который переворачивает все обратно для согласованности.