新しいobjective-cクラスのUIViewControllerファイルを作成するとき。 nibファイルからビューを生成する前に、ViewController.mファイルの中のどのコマンド/メソッド/行が実行されているかを知りたい。nibファイルからビューをロードする前に実行されるメソッドまたはコマンドはありますか?
私は、viewDidLoadがnibファイルの前に最初に実行されることを知っています。 他に何かありますか?
ここで小さなnoobをご利用いただきありがとうございます。
新しいobjective-cクラスのUIViewControllerファイルを作成するとき。 nibファイルからビューを生成する前に、ViewController.mファイルの中のどのコマンド/メソッド/行が実行されているかを知りたい。nibファイルからビューをロードする前に実行されるメソッドまたはコマンドはありますか?
私は、viewDidLoadがnibファイルの前に最初に実行されることを知っています。 他に何かありますか?
ここで小さなnoobをご利用いただきありがとうございます。
あなたのビュー階層がロードされる前に呼び出される唯一の方法は、initWithNibName:bundle:
方法です。 次に、初めてビューコントローラのview
にアクセスし、nib
がロードされ(loadview
メソッド経由)、次にviewDidLoad
メソッドが呼び出されます。 これが明らかになることを願っています。
ps。あなたのビューを作成し、 ビューコントローラを初期化するためにInterface Builderを使用する場合は、このメソッドをオーバーライドしてはならない
:あなたは
loadview
メソッドをオーバーライドすることもできますが、Appleは述べています。 (loadviewメソッドに関するアップルのドキュメント)
-(void)loadView
メソッドを試してください。これは、ビューコントローラのビューが設定される前に呼び出され、実際にはself
(コントローラ)のview
プロパティを設定する場所です。
-(void)loadView
{
self.view = [[UIView alloc] initWithFrame:...]; //Or get it from the nib...
}
ありがとうございました。やってみます。 –
これは非常に明確です。どうもありがとうございます。小さなこと。私が '[ViewController alloc]'または '[[ViewController alloc] initWithNibName:nil bundle:nil]'を呼び出し、 '[self viewDidLoad]'をもう一度呼びます。それを実行するとビューが生成されるときと同じようになるのでしょうか? –
自分でviewDidLoadを呼び出さない。これは、ビュー階層がロードされたとき(あなたのケースのペン先から)呼び出されるデリゲートメソッドです。これがあなたのビューのソースであれば、ペン先を渡さずにコントローラを初期化するのは何ですか?一般的なルールとして、 'loadview'メソッドをオーバーライドするのは、nibファイルではなくプログラムでビュー階層を作成する場合だけです。 – Alladinian