2013-03-26 9 views
5

私は奇妙な問題を抱えています.UISplitViewController。私はタップしたときモーダルビューを開くマスタービューコントローラのボタンを持っています(単純なストーリーボードセグを使用しています)。UISplitViewControllerを回転させた後にモーダルが消える

しかし、iPadを回転するとモーダル表示が消えますが、縦向きから横向きに回転する場合にのみ表示されます。マスタービューコントローラは、ネイティブのMailアプリケーションの場合と同様に、ポートレートで隠されています。

モーダルを表示しているとき(マスターが常に表示されているとき)、モーダルを開くと、デバイスが正しく回転し、モーダルが画面上にとどまります。

splitViewControllerでperformSegueWithIdentifier:を呼び出すと、手動でセグをトリガしてみましたが、回転は両方向で動作します。しかし、私はマスタービューコントローラにモーダルを表示する他のボタンがあるので、これが簡単な方法で修正可能かどうか疑問に思っていましたが、それぞれについてIBアクションを行い、ストーリーボードの利点を失いたくありません。

答えて

1

残念ながら、あなたのipadがポートレートモードになっているとき、あなたはあなたのマスターのポップオーバーを持っています、それは別の形のマスターではありません。何があなたが肖像画から風景に移動したときにあなたが見ることができるようにする方法splitViewController:willShowViewControllerがあなたのポップオーバーのnilを行います、presentingViewControllerとしてこのポップオーバーを使用してモーダルを提示していることを意味します

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem 
{ 
    // Called when the view is shown again in the split view, invalidating the button and popover controller. 
    [self.navigationItem setLeftBarButtonItem:nil animated:YES]; 
    self.masterPopoverController = nil; 
} 

だから私はそれが受け入れ、あなたのことであることを理解しますそれはモーダルです。だから、これであなたの行動をあなたのsplitViewControllerにperformSegueWithIdentifier:という呼出しをしたときにそれが起こらない理由を理解すると、モーダルはあなたのポップオーバーに接続されなくなります。

風景から肖像画に移動したときになぜそれが起こらないのか尋ねることができます。その理由はsplitViewController:willHideViewControllerです。それはそれを削除しないviewControllerを隠すので、モーダルは常に接続されます。

ので、残念ながらそこには解決策はありません、あなたはコードでアクションを実行する必要があります。..

私はそれが役に立てば幸い、

ロベルト

関連する問題