0

Я написал пользовательский UIStoryboardSegue.Переход не отображается между представлениями в пользовательском UIStoryboardSegue

Единственный код в моем файле CustomSegue.m является:

-(void) perform { 
    UIViewController* sourceViewController = (UIViewController *) self.sourceViewController; 
    UIViewController* destinationViewController = (UIViewController *) self.destinationViewController; 

    UIWindow* window = UIApplication.sharedApplication.keyWindow; 
    window.rootViewController = destinationViewController; 
    window.rootViewController = sourceViewController;  

    [UIView transitionWithView: sourceViewController.view.window 
         duration: 0.5 
         options: UIViewAnimationOptionTransitionFlipFromLeft 
         animations: ^{window.rootViewController = destinationViewController;} 
         completion: ^(BOOL finished) {} 
    ]; 
} 

Если настроить раскадровку так просто два UIViewControllers, с помощью кнопки на первом связывании ко второму, все работает, как и планировалось : есть переключение с левого перехода.

Но: если я поместил UINavigationController перед первым UIViewController, segue теперь отображает второй контроллер представления, не делая переворота слева.

Что происходит? Почему переход не работает с контроллером навигации?

Благодарим за помощь!

(В случае, если вас интересует, почему я использую пользовательский SEGUE так, что я могу иметь вид мастер-деталь, появляющийся после некоторых страниц интро. Я вдохновлен this Stackoverflow answer.)

ответ

1

I никогда не разрешал это, но нашел простую обходную проблему. Я удалил навигационный контроллер с фронта, но поставил один после segue. Затем я разместил простую панель навигации в верхней части экрана источника. Сегэ также активировал добавление кнопки возврата на контроллер представления назначения. Таким образом, мой пользовательский переход стал «псевдо-push» segue.

+0

Я использовал ваш образец кода, и он отлично работает. – BlueLettuce16

+0

Я рад это слышать! –

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