0

カスタム 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) {}
     ];
}

ストーリーボードを設定して、最初のボタンが 2 番目のボタンにリンクされた 2 つの UIViewController だけを持つようにすると、すべてが計画どおりに機能します。左トランジションからのフリップがあります。

しかし: 最初の UIViewController の前に UINavigationController を配置すると、セグエは左からのフリップを行わずに 2 番目のビュー コントローラーを表示するようになりました。

何が起こっている?遷移がナビゲーション コントローラーで機能しないのはなぜですか?

ご協力いただきありがとうございます!

(興味がある場合は、カスタム セグエを使用している理由は、いくつかの紹介ページの後にマスター詳細ビューを表示できるようにするためです。この Stackoverflow の回答に触発されています。)

4

1 に答える 1

1

これを解決したことはありませんが、簡単な回避策を見つけました。ナビゲーションコントローラーを前から外しましたが、代わりにセグエの後ろに置きました。次に、ソース画面の上部にシンプルなナビゲーション バーを配置しました。セグエは、宛先ビュー コントローラーに戻るボタンの追加もトリガーしました。したがって、私のカスタム セグエは「疑似プッシュ」セグエになりました。

于 2013-02-27T04:51:10.400 に答える