2017-01-27 5 views
-1

私は新しいファイルを作成し、Cocoa Touch Classをチェック - >次にサブクラスをUIViewController - >私も "XIBファイルを作成する"とマークしました。Nibがどのようにロードされている可能性がありますか?

予想通りそれは簡単なUIViewControllerを作成したが、ここで私の質問は、私が呼ばれたときbecuaseである:

present(MyViewController(), animated: true) 

をこれは私が望んでいたようMyViewController()示していますが、どのようにそれは私が簡単なinit()を使用している可能性があるとペン先がロードされています? 私は、異なるインサイザライザーを使用する必要があると思っていました。

+0

Objc言語で以前に作業しましたか? –

+0

残念ながら、しかし、Objcコードも高く評価されます。 – Tajnero

+0

しかし、あなたはこれと共通して何も質問を投稿しませんでした。 – Tajnero

答えて

3

これは「スウィフト」ではありません。それはUIViewControllerクラスの実装です。 Objective-Cでも同じことが起こります。

まず、UIViewController init(nibName:bundle:)メソッドとnibNameプロパティのドキュメントを読んでください。

nibNameドキュメントから:

あなたのView Controllerのビューを保存するためのnibファイルを使用する場合、あなたのビューコントローラを初期化するとき、あなたが明示的にそのnibファイルを指定することをお勧めします。ただし、nib名を指定せず、カスタムサブクラスのloadView()メソッドをオーバーライドしない場合、ビューコントローラは他の手段を使用してnibファイルを検索します。具体的には、適切な名前(.nib拡張子なし)のnibファイルを探し、そのビューが要求されるたびにnibファイルをロードします。具体的には、次のいずれかの名前でnibファイルのために(順番に)になります。

  1. ビューコントローラクラス名はMyViewControllerのように、単語「コントローラ」で終わっている場合、それは、nibファイルを探しますその名前はMyView.nibのように 'Controller'という単語がないクラス名と一致します。

  2. 名前がView Controllerクラスの名前と一致するnibファイルを探します。たとえば、クラス名がMyViewControllerの場合、MyViewController.nibファイルが検索されます。

基本的には、あなたのケースでは、あなたがペン先名にnilを指定した意味、デフォルトの初期化子を使用しています。したがって、実行時には、View Controllerクラスと同じ名前で作成したペン先が自動的に検出され、使用されます。

+0

私は重複した質問だと思う。たくさんの質問がすでに答えています。 –

+0

@ SohilR.Memonリンクした質問は、この質問とは関係ありません。 – rmaddy

+0

init()の後にini(nibName:bundle :)を呼び出す可能性はありますか? – Tajnero

関連する問題