19

Whenever I try to present a UISplitViewController modally the application crashes. Thus it must allways be the root view controller. Can anyone confirm that?

4

5 に答える 5

21

Apple iPadプログラミングガイドから:

Split View Controller のビューは、常にアプリケーション ウィンドウのルート ビューとしてインストールする必要があります。ナビゲーションまたはタブ バー インターフェイス内に分割ビューを表示しないでください。

そうです、メイン アプリケーション ウィンドウの外に分割ビューを表示することはできません (モーダルを含む)。

編集

上記のドキュメントへのリンクでは、このトピックについては説明されていません。関連する議論は、Apple のView Controller Catalog for iOSで見つけることができ、次のように述べられています。

分割ビュー コントローラーは、作成するすべてのインターフェイスのルートである必要があります。つまり、アプリケーションのウィンドウのルート ビューとして常に UISplitViewController オブジェクトからビューをインストールする必要があります。[...] Split View Controller はモーダルに表示できません。

于 2010-04-05T17:38:08.307 に答える
3

通常のコンテンツビューコントローラーからセグエしようとしたときに、同じエラーで同じ問題が発生しました(つまり、タブコントローラーまたはナビゲーションコントローラーからセグエグしても問題ありません)。

幸いなことに、VC と分割ビュー コントローラーの間にナビゲーション コントローラーを挿入することで、これを回避する方法を見つけました。つまり、VC からナビ コントローラーにセグエし、ナビ コントローラーと分割ビュー コントローラーの間に関係接続を描画します。このように、分割ビューのインスタンス化にはコーディングは必要ありません。

于 2012-12-26T14:03:35.957 に答える
2

もちろんUISplitViewController、ルートView Controllerとして使用しなくても使用できます。私のプロジェクトでは、次のように使用します。

  1. モーダル メソッドで自分のビュー コントローラーを表示します。
[self presentModalViewController:mainViewController アニメーション:YES];
  1. mainViewController には、
UISplitViewController *splitViewController;

で、 を- (void)viewDidLoadに設定splitViewController.viewします。mainViewController.view

splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil];
self.view = splitViewController.view;
于 2011-02-08T14:44:44.423 に答える
1

UISplitController は UITabBarController の下にインストールできます。私がやる。このフォーラムで検索してみてください。少なくとも 1 つの優れたソフトウェア サンプルが見つかりました。

于 2012-01-11T08:45:28.863 に答える
0

はい、まさに RootViewController を使用する必要があり、UITableViewController から継承する必要があります。このチュートリアルをご覧ください

于 2013-02-07T10:49:14.047 に答える