19

nib/xibファイルをロードする方法が2つあることに気づきました。

  1. UIViewのinitWithNibName:bundle:メソッドを介して
  2. NSBundleのloadNibNamed:owner:options:メソッド。

誰かがこれら2つの違いを説明できますか?また、どちらを使用するのが適切なのか、どのような状況で使用するのが適切ですか?

たとえば、tableView:viewForHeaderInSection:メソッドのnibファイルからカスタムテーブルセクションヘッダービューをロードする場合、どちらを使用しますか?

または、nibファイルからカスタムテーブルビューセルをロードする場合、どちらを使用しますか?

4

2 に答える 2

12

NSBundleのメソッドは、NIBのアーカイブを解除するために使用する汎用APIです。彼らは実際の仕事をします(一緒にNSNib)。

UIViewControllerinitWithNibName:bundle:一方、は、ペン先からビューをロードする(可能性がある)ビューコントローラを初期化する方法です。メソッド自体はペン先をロードしませんが、名前をメモするだけです。ビューが要求されると、コントローラーはペン先を遅延ロードします。

にペン先が読み込まれていることを認識していませんUIView

于 2009-11-09T22:16:15.687 に答える
10

ヘッダーのビューコントローラーにnibファイルの任意のフィールドへのIBOutletsが含まれている場合は、 initWithNibを呼び出すのではなく、nibファイルをロードすることをお勧めします。ヘッダーファイルのビューコントローラで、開始ステートメントを次のように変更します。デフォルトのステートメントはコメント化されています。
そうすることで、IBoutletsを使用してnibファイルのフィールドにアクセスできるようになります。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    //self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    // Custom initialization.
    if ([[NSBundle mainBundle] loadNibNamed:@"NibFile" owner:self options:nil]) {

    }

    return self;
}
于 2012-02-21T12:00:50.780 に答える