2013-05-28 6 views
1

Я пытаюсь перевернуть viewcontroller внутри навигационного контроллера, но с небольшим успехом до сих пор я пытался использовать тысячи решений, но ни один не подходит. Я хочу, чтобы перевернуть контроллер так:Flip ViewController, но поддерживайте тот же NavigationController со Storyboard

Нажмите кнопку, чтобы перейти на карте: http://i39.tinypic.com/fabul3.jpg

Нажмите ту же кнопку, чтобы вернуться с изменением образа: http://i40.tinypic.com/2qa1y0h.jpg

мне нужно его поддерживать в coerence с раскадровки для непосредственно перейти. Есть ли у вас какие-либо идеи или примеры того, как это сделать?

ответ

2

Вместо того, чтобы переворачивать контроллер вида, вам может быть легче перейти к самому представлению. Там это стандартный способ перевернуть представления, которое рассматривается в этом вопросе:

How to implement flip transition effect for UIView

Кроме того, вы всегда можете попробовать и переход вид контроллер сам с помощью пользовательского Segue, но я подозреваю, что это будет намного легче обрабатывать флип на уровне UIView.

+0

Я попытался создать пользовательский segue, и он работает (flip effect), но я теряю навигационную панель для последовательного segue. –

1

Вы можете создать новый UIViewController, который содержит представление контейнера в раскадровке, и назначить контроллер вида карты сети поездов в виде контейнера.

Затем в коде вы можете создать экземпляр контроллера вид карты из раскадровки:

self.mapViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MapViewController"]; 

Читайте больше зрения контейнера, чтобы понять на следующих строках, предполагая networkMapViewController начальное контроллер представления, что вы хотите флип в mapViewController:

[self.networkMapViewConroller willMoveToParentViewController:nil]; 
[self addChildViewController:self.mapViewController]; 
[self.mapViewController didMoveToParentViewController]; 

Затем вы можете использовать метод контроллера представления transitionFromViewController: toViewController: продолжительность: опции: анимации: завершение:

[self transitionFromViewController:self.networkMapViewController 
         toViewController:self.mapViewController 
           duration:.5 
           options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionTransitionFlipFromRight 
          animations:nil 
          completion:^(BOOL finished) { 
           [self.networkMapViewController removeFromParentViewController]; 
          }]; 

Вам необходимо будет написать похожие строки для изменения обратно с контроллера отображения карты на networkMapViewController.

+0

Если я использую вид контейнера, я теряю стек навигационной панели для segue (значение ячейки Uitableview) и (аннотация на карте). –

+0

@ IvanZandonà В этом случае вам может потребоваться вынуть segue на контроллер вида, который имеет вид контейнера, и создать делегат для представления таблицы для выполнения segue в контроллере представления контейнера. –

+0

Можете ли вы опубликовать или связать пример, чтобы я мог лучше понять? –

Смежные вопросы