addSubview
ビュー間を移行することが目的の場合は、実際には使用しないでください。これを行うと、ビューコントローラ階層がビュー階層と同期しなくなることを許可しているため、回転イベントを受信しません。addSubview
真のサブビュー(たとえば、、、、など)をビューに追加する場合にのみUILabel
使用する必要があります。またUIImageView
、UIButton
適切なビューコントローラの包含を行う場合は子ビューなどをビューに追加する必要があります。ビュー間の遷移にを使用するaddSubview
と、ビューコントローラとビューの間の根本的な混乱が生じます。
ビューを適切に管理するための鍵は、ViewController階層がView階層と同期していることを確認することです。これを行う最も簡単な方法は、View Controller間を移行し、ViewControllerにビューの表示を任せることです。したがって、NIBを使用している場合、通常は次のようになります。
GolOlurActionViewController *golOlur = [[GolOlurActionViewController alloc] initWithNibName:nil bundle:nil];
[self presentViewController:golOlur animated:YES completion:nil];
または、ナビゲーションコントローラーを備えたNIB:
GolOlurActionViewController *golOlur = [[GolOlurActionViewController alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:golOlur animated:YES];
または、ストーリーボードを使用している場合(ストーリーボードを使用している場合は、おそらくセグエを使用しているので、これは必要ありませんが、完全を期すためです):
GolOlurActionViewController *golOlur = [self.storyboard instantiateViewControllerWithIdentifier:@"GolOlurActionView"];
[self presentViewController:golOlur animated:YES completion:nil];
ストーリーボードがナビゲーションコントローラーを使用している場合:
GolOlurActionViewController *golOlur = [self.storyboard instantiateViewControllerWithIdentifier:@"GolOlurActionView"];
[self.navigationController pushViewController:pushViewController:golOlur animated:YES];
万が一、コントローラーの封じ込めを行おうとしている場合は、それが少し異なるため(とへの呼び出しが必要)、お知らせくださいaddChildViewController
。didMoveToParentViewController
ただし、ビュー間の基本的な遷移を実行している場合は、コントローラーの適切な初期化とそれに続くpresentViewController
またはpushViewController
あなたのためにそれを行う必要があります。
アップデート:
簡単に言うと、ストーリーボードを使用している場合(私はそうは思いませんがinstantiateViewControllerWithIdentifier
、念のため)、ストーリーボードでセグエを定義し、InterfaceBuilderで識別子文字列を指定することをお勧めします。 、次に次のコードを使用して次のシーンに移行します。
[self performSegueWithIdentifier:@"yourIdentifier" sender:self];
このようにすると、コントローラーのインスタンス化が自動的に行われ、アプリ全体のフローがストーリーボードに正確に表示されます。