以下の2箇所にinitコードを書けると思います
initwithNibName
viewDidLoad
どのような違いがあります。
の前にinitWithNibName
起こると思います。viewdidLoad
initWithNibName
以下の2箇所にinitコードを書けると思います
initwithNibName
viewDidLoad
どのような違いがあります。
の前にinitWithNibName
起こると思います。viewdidLoad
initWithNibName
initWithNibName
最初に呼び出されます。これは の指定された初期化子ですUIViewController
。言い換えれば、 init a を呼び出す他のメソッドに関係なく、最終的にどこかUIViewController
への呼び出しが発生します。initWithNibName
たとえば、 を呼び出すだけの場合[[UIViewController alloc] init]
、デフォルトの動作では、View Controller クラスと同じ名前の nib ファイルをロードしようとします。
viewDidLoad
ビューがロードされた後、後で呼び出されます。API ドキュメントを引用するには:
このメソッドは、View Controller がそのビュー階層をメモリにロードした後に呼び出されます。このメソッドは、ビュー階層が nib ファイルからロードされたか、loadView メソッドでプログラムによって作成されたかに関係なく呼び出されます。通常、このメソッドをオーバーライドして、nib ファイルからロードされたビューで追加の初期化を実行します。
UIViewController
ドキュメントを注意深く読んで、より明確に理解してください。
何がどこに行くの?
入るコードの種類はinitWithNibName
、どのメソッドでも同じですinit
。通常、必要なプロパティを設定します。
に関してはviewDidLoad
、ビュー階層がメモリにロードされたら実行する必要があるコードをここに入れることができます。たとえば、コントローラーが担当する何かをプログラムで実行したい場合は、ここで実行します。これは、UIViewが呼び出さUIView
れた時点でメモリにロードされていないためです。init
self.view
よくある間違いは、メソッド内の (またはサブビュー) にメッセージを送信しようとして、initWithNibName
なぜ効果がないのか不思議に思うことです。self.view
その時点で nil であるため、効果はありません。