2011-08-05 207 views
0

如果我有一個帶有根視圖控制器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。我認爲蘋果只是試圖讓它更直觀地使用便捷方法。