ログイン画面があり、ユーザーがログインするとタブバーのコントローラーが押されるアプリがあります。 AppleがすべてのiOSデバイスでスプリットビューコントローラーの使用を許可するようになったため、UISplitViewControllerは常にでなければならないことを読んだときにこれを実装する準備をしていたルートビューコントローラー。では、UISplitViewControllerを使用して、タブの1つにあるビューをマスター/詳細ビューにすることができるかどうか、またはこれを手動で実装する必要があるかどうか疑問に思いました。
分割ビューをタブとして表示できない場合、タブバーコントローラーからプッシュできますか? (たとえば、ユーザーがテーブルビューで行をタップすると、マスター/詳細ビューが表示されます)。
UISplitViewController
の中にUITabBarController
を確実に埋め込むことができます。 AppStoreでリリースしたアプリに対してそれを実行しました。 3つのタブがあり、それぞれが分割ビューコントローラーです。
タブバーコントローラーをストーリーボードにドラッグし、追加した2つのコントローラーを削除してから、分割ビューコントローラーをドラッグします。タブバーコントローラーから分割ビューコントローラーへのドラッグを制御し、「ビューコントローラー」関係セグエを選択します。
Xcode 8より前のバージョンのXcodeでは、Interface Builderキャンバスの分割ビューコントローラーの上部と下部に黒または白のバーが表示される場合がありますが、これらはアプリをデバイスで実行すると表示されません。
IPhone 6sPlusのタブバーコントローラー内に埋め込まれた分割ビューを表示するために実行されているアプリは次のとおりです。
また、splitviewcontrollerが折りたたみモードになっているiPhone(> IOS8)でこのアプローチを使用すると問題が発生します。リストビューを詳細ビューにプッシュすると、従来の「hidesBottomBarWhenPushed」を使用してタブバーコントローラーを非表示にすることはできません。そこで、ナビゲーションコントローラーのルートビューコントローラーとしてTabBarcontrollerを追加しました。詳細ビューにプッシュすると、メッセージをルートナビゲーションコントローラーに送信し、折りたたまれたモードでビューを詳細ビューインスタンスにプッシュしますが、通常モードでは、showDetailsViewController()を使用してプッシュします。