0

メソッドに次のコードを記述してUISplitViewController、既存の を作成してロードしました。ViewControllerviewDidLoad

LeftPanelViewController *leftPanel = [[LeftPanelViewController alloc] initWithNibName:@"LeftPanelViewController" bundle:nil];
FirstViewController *firstView = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPad" bundle:nil];

self.navigationController = [[UINavigationController alloc] initWithRootViewController:firstView];

UISplitViewController *splitController = [[UISplitViewController alloc] init];
splitController.viewControllers = [NSArray arrayWithObjects:leftPanel, self.navigationController, nil];

[self.view addSubview:splitController.view];
[self addChildViewController:splitController];

[splitController didMoveToParentViewController:self];

splitController が iPad の境界に描画されていないという事実を除いて、すべて問題ありません。画面の上部とビューの上部の間にスペースがあります。iPadを回転させても、左側のパネルにも同じ問題があります。

SplitViewControllerには xib ファイルがなく、追加されたビューを別のビューに変更すると、すべてが正しく表示されます。

この問題の原因について何か考えはありますか?

注: シミュレーターでプロジェクトを複数回コンパイルして実行すると、SplitViewController問題なく表示される場合もあれば、画面の端とビューの間にスペースがある場合もあります。iPad で実行すると、常に同じ問題が発生します。

4

1 に答える 1

1

まず第一に、なぜコンテナ ビュー コントローラを実装するのですか? splitViewController を単独で提示したいだけだと思いますよね?自分でビューを追加しないでください。

rootViewController代わりに、ウィンドウで正しく設定してください(できれば でapplicationDidFinishLaunching)。

self.window.rootViewController = splitViewController;

標準的なケースでは、Container View Controller は必要ありません。したがって、次のメソッドを使用する必要はありません。

addChildViewController:
removeFromParentViewController
willMoveToParentViewController:
didMoveToParentViewController:

UIViewControllerのドキュメントを確認してください。


Container View Controller を本当に実装したい場合は、自分でレイアウトを処理する必要があります。したがって、他のコントローラーのビューを自分で配置/サイズ変更する必要があります。AutoLayout または autoresizing を使用するかどうかに応じて、正しい制約/フラグを設定する必要があります。

于 2013-09-05T08:49:19.813 に答える