3

loadView メソッドをオーバーライドすると、nib ファイルがあるかどうかにかかわらず、loadView が呼び出されます。loadView をオーバーライドせず、nib ファイルがある場合、それは呼び出されますか?

4

3 に答える 3

8

はい、loadViewView Controller のクラス名に基づいて、既知のバンドルから自動的に nib ファイルをロードします。オーバーライドloadViewして を呼び出さない場合[super loadView]、ペン先はロードされません。UIViewController クラスはloadView、そのviewプロパティが呼び出されて nil のときに呼び出されます。

loadViewまた、スーパーをオーバーライドして呼び出すことは、おそらくあなたが望むものではないことに注意してください。プロパティloadViewを設定するためのものです。それだけです。self.view他のすべてはviewDidLoadなどで起こるはずです。

于 2011-09-24T07:14:25.663 に答える
0

はい。ロード ビューは、バンドルに Nib があるかどうかに関係なく、常に呼び出されます。loadView には、任意のソースから取得できる UIViewController のビューをロードするジョブがあります。

そのため、2 つの方法でビューを探します

1. initWithNibName:bundle:を呼び出した場合、またはストーリーボードがある場合に設定できるプロパティnibFileを確認します - ストーリーボードには、nib ファイル内に作成されたすべてのビューも保存されます。

2.どちらのソースからも nib を設定しない場合は、自分でビューを作成することを計画しています。この場合、後でこのビューをビュー コントローラーのビュー プロパティに設定できます。

于 2013-12-16T08:22:30.033 に答える
0

はい:

@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)
于 2011-09-24T15:36:29.357 に答える