簡體   English   中英

將視圖控制器添加到視圖層次結構的正確方法是什么?

[英]What's the proper way to add a view controller to the view hierarchy?

我有一個視圖控制器(A)加載視圖控制器(B)並在我的視圖層次結構中使用它的視圖。 如果我將B的視圖添加到A的視圖層次結構中,並且我不手動轉發像viewWillAppear這樣的事件,我無法在B控制器中處理它們。 (來自viewWillAppear:docs)

警告:如果屬於視圖控制器的視圖直接添加到視圖層次結構中,則視圖控制器將不會收到此消息。 如果向視圖層次結構插入或添加視圖,並且它具有視圖控制器,則應直接向關聯的視圖控制器發送此消息。 未能發送視圖控制器此消息將阻止顯示任何關聯的動畫。

嵌套視圖控制器的正確方法是什么? (就像NavBarController那樣。)如果只是需要將一組事件轉發到嵌套控制器的問題,那么我需要轉發的所有事件是什么?

這里沒有神奇的解決方案。 正確的解決方案是手動發送這些消息。

viewWillAppear:/ viewDidAppear:和viewWillDisappear:/ viewDidDisappear:消息是您手動發送到子視圖控制器所需的唯一消息。

您應該在父視圖控制器中實現所有這四個方法,並在父級接收到消息並加載子級時將相同的消息發送到子視圖控制器。

此外,當您添加子視圖控制器的視圖時,如果父視圖的view.window為非零,則應發送viewWillAppear:/ viewDidAppear:消息。 刪除視圖時,如果父視圖的view.window為非零,則應發送viewWillDisappear:/ viewDidDisappear:消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM