0

私はrootControllerのMyViewControllerのインスタンスを持つinitであるnavigationControllerを持っています。presentModalViewControllerは正確に何をしますか?

そして、それMyViewControllerのコード に私は

AnotherViewController *vc = [[AnotherViewController alloc] init]; 
[self presentModalViewController:vc animated:YES]; 

または

AnotherViewController *vc = [[AnotherViewController alloc] init]; 
[self.navigationController presentModalViewController:vc animated:YES]; 

を使用することができます私はこの二つの作品と同じを発見しました。どちらもモーダルビューを正しく表示します。また、提示されたAnotherViewControllerの "parentViewController"プロパティがすべてナビゲーションコントローラに設定されていることがわかりました。

なぜこれが起こるのですか?presentModalViewControllerは、自分がナビゲーションコントローラのサブビューであることを自動的に検出し、ナビゲーションコントローラにメッセージを再送信しますか?

+0

はい? MyViewControllerは誤っていないとナビゲーションコントローラのサブビューです(コード内にあると思います)。なぜなら、あなたが何をするにしても、正しくポップアップするはずです。 – Sum

答えて

0

MyViewControllerはUINavigationControllerのルートビューコントローラであるため、presentModalViewController:animatedの簡易メソッドをデフォルトで取得します。ですから、self.navigationControllerと言うと、presentModalViewControllerが提供するのと同じnavigationControllerを参照しています。私は、Appleが便利な方法を使うのがより直感的であるようにしようとしていると思う。