2 つの異なる UISplitview コントローラーを使用して、2 つの異なるマスター/詳細情報セットを制御するユニバーサル アプリがあります (一方のデータ型が他方のデータ型にネストされています)。
次の関数を呼び出して、最初から別の関数に切り替えます。
@IBAction func viewEntries(sender: AnyObject) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let entriesSplitView = storyboard.instantiateViewControllerWithIdentifier("entriesSplitView") as! UISplitViewController
entriesSplitView.delegate = self.appDelegate
UIView.transitionWithView(self.view.window!, duration: 0.25, options: .TransitionCrossDissolve, animations:
{
self.appDelegate.window?.rootViewController = entriesSplitView
}, completion: nil)
}
このセカンダリ UISplitView のマスター ビュー コントローラーで、ナビゲーション コントローラーの leftBarButton を設定して、同様の関数をトリガーし、元の最上位レベルの UISplitView に戻します。
私の唯一の問題は、iPhone では、この遷移後に表示される最初のビューが詳細ビュー コントローラーであることを確認したいということですが、マスター ViewController を最初に表示してから、詳細を表示できるようにしたいということです。以下を追加することで解決できます。
let masterNavigationController = entriesSplitView.viewControllers[0] as! UINavigationController
masterNavigationController.popToRootViewControllerAnimated(false)
後 self.appDelegate.window?.rootViewController = entriesSplitView
ですが、そうすると、ちらつきが速くなります。その呼び出しの前に置くと、望ましい効果がありません。
詳細ビューへのアクセスを許可しながら、マスタービューが最初に呼び出されたビューであることを確認する適切な方法に関するアイデアはありますか?