2011-10-24 3 views
1

は、私はあなたが(それが存在する場合)、それはクラスの同じ名前のnibファイルをロードするマニュアルに従って、initを呼び出した場合のUIViewControllerの指定イニシャライザはUIViewControllerのサブクラスのinitメソッドが同じ名前のnibファイルをロードしないことがあるのはなぜですか?

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 

であることを知っています。

しかし、私が遭遇するのは、時にはinitがすべてのことを正しく行うということです。しかし、時にはUIViewControllerのサブクラスのinitメソッドがnibファイルをロードしないことがあります。同じ方法で(Xcodeのアシスタントを使用してUIViewControllerサブクラスを作成し、それと同時にnibファイルを関連付けるので、ファイル名はすべて同じにする必要があります)、それらを作成します。

どうしてですか?

答えて

1

クラスがUITableViewControllerのサブクラスである場合は、-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil を使用してnibから初期化する必要があります。

(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

あなたがinitを使用している場合ので、それはので、あなたのため(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNilを呼び出します。のUIViewControllerの指名初期化子があるので

です。

しかし、のUITableViewControllerの指名初期化子は、次のとおりです。

のUITableViewControllerに initを使用して
- (id)initWithStyle:(UITableViewStyle)style 

initWithStyleないinitWithNibName

を呼び出します
関連する問題