0

ここに画像の説明を入力

を使用してView Controllerのビューを追加しました

 [self.view addsubview view controller.view];

写真のとおり、上までしっかりと流されています。

下のView Controllerにはナビゲーションバーがあります。

4

2 に答える 2

1

BlackRider が言ったように、最良のアプローチは、追加されたビューのフレームにスーパービューの境界を割り当てることです。

[self.view addSubview: viewcontroller.view];
viewcontroller.view.frame = self.view.bounds;

これは、新しく追加されたサブビューのサイズと位置を設定して、親ビューを完全にオーバーラップさせるのに最適な方法です。

ほとんどの場合、別の UIViewController のビューを追加することは最善の方法ではありません。ただし、特殊なアニメーションのトランジションを実現するには、この手法が唯一の方法ではないにしても、最も効果的な方法であることがわかりました。これに続いて、追加されたビューを削除し、新しい UIViewController をアニメーションなしで表示します。

特別なアニメーションやビュー階層の配置が必要ない場合は、おそらくお勧めできません。新しいView Controllerを全画面表示にしたい場合は、次を使用します。

[self presentViewController: viewcontroller animated:YES completion:nil];

それ以外の場合は、ナビゲーション コントローラーの一部にする場合は、ナビゲーション コントローラーのスタックにプッシュします。あなたの例では、 selfが現在のトップコントローラーであると仮定しています:

[self.navigationController pushViewController:viewcontroller animated:YES];

詳細については、View Controller の表示と遷移スタイルの選択をご覧ください。

http://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html#//apple_ref/doc/uid/TP40007457-CH111-SW3

于 2013-05-08T18:32:49.997 に答える
1

フレームを指定して、新しいView Controllerのビューを配置する必要もあります。そうしないと、今のように、予期しないことが行われます。

必要に応じて、次のようになります。

controller.view.frame = self.view.bounds;

これにより、現在の VC のビューが新しい VC のビューと重なるだけです。

または、必要に応じて必要に応じて変更します。

于 2013-05-08T18:09:00.127 に答える