0

私はストーリーボードに非常に慣れていません(iOSプログラミング全般にもかなり慣れていません)。iPad専用アプリのストーリーボードにマスター/詳細ビューを追加しようとしています。これが私がこれまでに得たものです:

  1. アプリのナビゲーションを駆動するメインのタブバーコントローラー。これは機能しています。
  2. ライブラリからMainStoryBoardにSplitViewControllerオブジェクトを追加しました。
  3. Ctrlキーを押しながらタブバーコントローラーからスプリットビューコントローラーにドラッグし、[リレーションシップシーケンス]->[ビューコントローラー]を選択します。これにより、Split View Controllerが新しいタブアイテムとして正常に追加されます(これが私が望むものです)。

しかし、アプリを実行して新しいタブアイテムをクリックすると、マスタービューがどこにも表示されずに詳細ビューが開くだけです。明らかにまだデータを追加していません。最初にすべてが機能していることを確認したいだけです。それが空である場合、マスターは表示されませんか?それは他のテーブルコントローラーが私のために働いた方法ではありません。それらはすべて空のテーブルを示しています。これが私がここで探しているものなので、左側の詳細を配線することができます。

スプリットビューコントローラーは、最初のコントローラーが「詳細ビューコントローラー」と言い、ナビゲーションコントローラー、マスターのテーブルビューコントローラー、詳細の単純なビューコントローラーの順に表示されるため、少し異質に見えます。エントリポイントがそれ自体を詳細ビューコントローラと呼んでいることを除いて、それはすべて私にとって理にかなっています。これは、マスターポップオーバー/左ペインテーブルなしで実行したときに表示されるものです。

更新:Master-Detail Applicationテンプレートから開始すると、SplitViewControllerオブジェクトのメイン画面にMasterViewControllerとDetailViewControllerの両方が表示されます。したがって、ライブラリからドラッグするだけでは、何かが異なります。テンプレートを使用せずに、既存のストーリーボードで同じことを実行するにはどうすればよいですか?ナビゲーションの残りの部分のかなりの部分をタブコントローラーの周りに配線しましたが、やり直したくありません。

ありがとう。

4

3 に答える 3

6

UISplitViewController が iOS8.1 で更新され、アプリケーションのルート ビュー以外の使用が可能になったようです。UISplitViewController にセグエするタブ バー アイテムの実装に成功しました。Apple 自身のドキュメントでは、このことを次の 1 つの言葉で確認しています。UISplitViewController のクラス ドキュメントにあります。

アプリのユーザー インターフェイスを構築する場合、分割ビュー コントローラーは通常、アプリのウィンドウのルート ビュー コントローラーです。

したがって、Apple はあいまいですが、私はそれを行っても問題ないと考えています。そして、私はそれが動作することを確認できます。

ここで、時期尚早に詳細ビューに移動しないようにするために、他にやらなければならないことがあります。詳細を再ハッシュするつもりはありませんが、この投稿を読んで、UISplitViewController をサブクラス化します。

  1. viewDidLoad で: SplitViewController のデリゲートを自分自身に設定します。
  2. UISplitViewControllerDelegate をプロトコル リストに追加します。
  3. 次に、 splitViewController:collapseSecondaryViewController:ontoPrimaryViewController を実装し、メソッド全体または以下の投稿に記載されている状況に YES を返します

iPhone の縦向きの UISplitViewController は、マスターの代わりに詳細な VC を表示します

于 2014-10-26T00:39:24.873 に答える
2

Split View Controller を Tab Bar Controller の 1 つのアイテムとして使用することはできません。

たとえば、http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/SplitViewControllers.htmlを参照してください。

分割ビュー コントローラーは、作成するすべてのインターフェイスのルートである必要があります。つまり、アプリケーションのウィンドウのルート ビューとして常に UISplitViewController オブジェクトからビューをインストールする必要があります。分割ビュー インターフェイスのペインには、インターフェイスを実装するために必要なナビゲーション コントローラー、タブ バー コントローラー、またはその他の種類のビュー コントローラーを含めることができます。分割ビュー コントローラーはモーダルに表示できません。

更新:これは、Xcode 6.1 および iOS 7/8 の時点で間違っているようです。@headacheの回答を参照してください。

于 2012-08-19T16:47:03.083 に答える
0

TabBarController なしでテストしてみてください。バグが再び発生する場合は、Xcode の File Inspector でストーリーボード (通常は画面の右隅にある小さなファイル アイコン) の Use Size Classes をオフにします。このサイトのどこかで、同様のバグとこの回答を見ました。また、同じ状況でしたが、タブバーコントローラーがありませんでした。

于 2014-11-16T18:08:24.593 に答える