loadView メソッドをオーバーライドすると、nib ファイルがあるかどうかにかかわらず、loadView が呼び出されます。loadView をオーバーライドせず、nib ファイルがある場合、それは呼び出されますか?
3 に答える
はい、loadViewView Controller のクラス名に基づいて、既知のバンドルから自動的に nib ファイルをロードします。オーバーライドloadViewして を呼び出さない場合[super loadView]、ペン先はロードされません。UIViewController クラスはloadView、そのviewプロパティが呼び出されて nil のときに呼び出されます。
loadViewまた、スーパーをオーバーライドして呼び出すことは、おそらくあなたが望むものではないことに注意してください。プロパティloadViewを設定するためのものです。それだけです。self.view他のすべてはviewDidLoadなどで起こるはずです。
はい。ロード ビューは、バンドルに Nib があるかどうかに関係なく、常に呼び出されます。loadView には、任意のソースから取得できる UIViewController のビューをロードするジョブがあります。
そのため、2 つの方法でビューを探します
1. initWithNibName:bundle:を呼び出した場合、またはストーリーボードがある場合に設定できるプロパティnibFileを確認します - ストーリーボードには、nib ファイル内に作成されたすべてのビューも保存されます。
2.どちらのソースからも nib を設定しない場合は、自分でビューを作成することを計画しています。この場合、後でこのビューをビュー コントローラーのビュー プロパティに設定できます。
はい:
@implementation iPhoneHomeViewController
- (void)loadView {
DEBUGLOG(@"view = %@, superview = %@", [self valueForKey:@"_view"], [[self valueForKey:@"_view"] superview]);
[super loadView];
}
コンソール:
GNU gdb 6.3.50-20050815 (Apple version gdb-1705) (Fri Jul 1 10:50:06 UTC 2011)
Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU
General Public License, and you are welcome to change it and/or distribute copies of it
under certain conditions. Type "show copying" to see the conditions. There is absolutely
no warranty for GDB. Type "show warranty" for details. This GDB was configured as
"x86_64-apple-darwin".sharedlibrary apply-load-rules all Attaching to process 1671.
[Line: 40] -[iPhoneHomeViewController loadView]: view = (null), superview = (null)