2012-02-20 13 views
6

デフォルトinitメソッドシグネチャは次のとおりです。nibNameOrNilはどういう意味ですか? XCodeの-生成されたビューコントローラの

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ } 
私は供給の両方の値が、(ゼロとしてバンドル付き)だけペン先名で初期化され、これらを見てきました

、またはその両方としてだけでnil。すべてがうまくいくようです。

UIViewControllerは実際にどのようにself = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];を処理しますか?両方の値にちょうどnilを渡すことに不利な点はありますか?

答えて

9

nilをnibNameとして渡すと、メソッドは、View Controllerと同じファイル名のペン先を探します。

たとえば、MyViewControllerという名前のビューコントローラがある場合は、MyViewController.xib nibファイルが検索されます。

nibが見つからない場合、コントローラのビューアウトレットにUIViewを作成して割り当てるには、loadViewメソッドをオーバーライドする必要があります。

nibName:docsから

- (void)loadView 
{ 
    UIView *theView = [[UIView alloc] ... 
    // Setup the main view 
    self.view = theView; 
} 
+0

私が探していたものです。ありがとう! – Tim

1

あなたはnibNameパラメータにnilを指定し、loadViewメソッドをオーバーライドしていない場合は、nibファイルのビューコントローラの検索が他を使用して手段。 nibNameを参照してください。

nibBundle:

nibファイルを検索するバンドル。このメソッドは、バンドルの言語固有のプロジェクトディレクトリのnibファイルを最初に検索し、続いてResourcesディレクトリを探します。 nilの場合、このメソッドはメインバンドルのnibファイルを探します。

関連する問題