を使用してView Controllerのビューを追加しました
[self.view addsubview view controller.view];
写真のとおり、上までしっかりと流されています。
下のView Controllerにはナビゲーションバーがあります。
を使用してView Controllerのビューを追加しました
[self.view addsubview view controller.view];
写真のとおり、上までしっかりと流されています。
下のView Controllerにはナビゲーションバーがあります。
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 の表示と遷移スタイルの選択をご覧ください。
フレームを指定して、新しいView Controllerのビューを配置する必要もあります。そうしないと、今のように、予期しないことが行われます。
必要に応じて、次のようになります。
controller.view.frame = self.view.bounds;
これにより、現在の VC のビューが新しい VC のビューと重なるだけです。
または、必要に応じて必要に応じて変更します。