3

閱讀有關iOS中UIViewControllers更改的文檔,試圖弄清楚呈現模式視圖控制器之間的交互如何在自定義容器視圖控制器內工作。最終,我希望能夠做的就是可靠地遍歷所呈現的視圖控制器鏈,即使這些控制器中的一些由子視圖控制器呈現。我正在創建一個庫,而不是一個應用程序,所以我沒有創建我將與之交互的層次結構,我只是試圖確保我的庫在不同類型的層次結構內正常工作。)呈現/呈現視圖控制器和父/子視圖控制器之間的交互是否在任何地方記錄?

所以我的問題歸結爲,當有人試圖從子視圖控制器呈現視圖控制器會發生什麼?

[childViewController presentViewController:viewController animated:YES completion:nil]; 

由於呈現視圖控制器意,直到它被駁回「接管」互動,這將使意義,我認爲發言請求將期待它的父(或實際上,高達parentViewControllers鏈直到它到達沒有parentViewController的視圖控制器),然後從該視圖控制器中顯示。否則,看起來好像開發人員可以像兩個不同的孩子一樣執行現有的模式視圖控制器等等,這在我看來是有問題的。 (例如,哪個視圖控制器會優先?)。

此外,如果上述內容屬實,似乎會有一些暗示。如果父視圖控制器正在顯示一個呈現的視圖控制器,這會返回什麼?

[childViewController presentedViewController]; 

難道是nil因爲父顯示呢?或者可以將此請求轉發給父母,以便parentViewController及其任何childViewControllers都具有相同的結果?

無論如何,我有一個示例項目準備開始運行一些場景,但我很好奇,如果有任何文檔我錯過了?或者如果有人已經知道這種交互發生的方式?

回答

2

我前一段時間工作的容器視圖控制器上閱讀並發現默認實現檢查是否存在parentViewController,並且如果它將消息傳遞給父級。

我找不到任何文檔,所以你不能100%依賴它。

+0

你和我的經驗是一樣的。感謝您的反饋。 – 2012-05-08 11:52:08

1

Dr.Touch具有優良的正是後上:

http://www.cocoanetics.com/2012/04/containing-viewcontrollers/

它是必須的,如果你到視圖控制器容器

+0

這是一篇關於如何製作容器視圖控制器的好帖子,但不幸的是,它沒有任何與我的問題相關的內容。從iOS 5開始,UIViewController有兩套apis,一套用於設置父子層次結構,另一套用於從另一個「呈現」視圖控制器。我的問題涉及這兩個API之間的交互。這篇博客文章僅討論這些主題中的第一個,根本沒有提到第二個主題。 – 2012-04-30 03:00:48

相關問題