web-dev-qa-db-ja.com

タブバー内のUISplitViewController

ログイン画面があり、ユーザーがログインするとタブバーのコントローラーが押されるアプリがあります。 AppleがすべてのiOSデバイスでスプリットビューコントローラーの使用を許可するようになったため、UISplitViewControllerは常にでなければならないことを読んだときにこれを実装する準備をしていたルートビューコントローラー。では、UISplitViewControllerを使用して、タブの1つにあるビューをマスター/詳細ビューにすることができるかどうか、またはこれを手動で実装する必要があるかどうか疑問に思いました。

分割ビューをタブとして表示できない場合、タブバーコントローラーからプッシュできますか? (たとえば、ユーザーがテーブルビューで行をタップすると、マスター/詳細ビューが表示されます)。

20
Alex Terreaux

UISplitViewControllerの中にUITabBarControllerを確実に埋め込むことができます。 AppStoreでリリースしたアプリに対してそれを実行しました。 3つのタブがあり、それぞれが分割ビューコントローラーです。

タブバーコントローラーをストーリーボードにドラッグし、追加した2つのコントローラーを削除してから、分割ビューコントローラーをドラッグします。タブバーコントローラーから分割ビューコントローラーへのドラッグを制御し、「ビューコントローラー」関係セグエを選択します。

Xcode 8より前のバージョンのXcodeでは、Interface Builderキャンバスの分割ビューコントローラーの上部と下部に黒または白のバーが表示される場合がありますが、これらはアプリをデバイスで実行すると表示されません。

enter image description here

IPhone 6sPlusのタブバーコントローラー内に埋め込まれた分割ビューを表示するために実行されているアプリは次のとおりです。

enter image description here

23
Jordan H

UISplitViewControllerをUITabBarController内に配置し、タブバーをopaqueに設定すると、UISplitViewControllerのコンテンツがであるという問題が発生します。タブバーのサイズを上にシフト

enter image description here

この問題を修正するには、ストーリーボードのUISplitViewControllerのUnder Opaque Barsチェックボックスをオンにする必要があります。

enter image description here

これで、UISplitViewControllerビューサイズが正しく計算されます。

enter image description here

13
Artheyn

また、splitviewcontrollerが折りたたみモードになっているiPhone(> IOS8)でこのアプローチを使用すると問題が発生します。リストビューを詳細ビューにプッシュすると、従来の「hidesBottomBarWhenPushed」を使用してタブバーコントローラーを非表示にすることはできません。そこで、ナビゲーションコントローラーのルートビューコントローラーとしてTabBarcontrollerを追加しました。詳細ビューにプッシュすると、メッセージをルートナビゲーションコントローラーに送信し、折りたたまれたモードでビューを詳細ビューインスタンスにプッシュしますが、通常モードでは、showDetailsViewController()を使用してプッシュします。

4
Allen Lee