0

ルートビューコントローラーMyViewControllerのインスタンスで初期化されているnavigationControllerがある場合。

そして、そのMyViewControllerのコードで使用できます

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

また

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

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

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

4

1 に答える 1

0

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

于 2011-08-05T04:29:37.297 に答える