2013-04-18 49 views
1

在我迄今爲止開發的應用程序中,我總是有一個UIViewController負責顯示其他UIViewController s以在UI中顯示轉換。每當我有一個「託管」視圖控制器調用「管理」視圖控制器中的一個方法,我必須確保我有一個管理控制器內的管理控制器的引用。有沒有更好的方式從管理視圖控制器調用管理視圖控制器中的方法?

例如: 如果我有一個名爲UIViewControllerMainController主要負責在我的應用程序的UI管理其他UIViewController S的,和MainController創建2個控制器的演示。分別稱爲SubController1SubController2。如果SubController1已完成,並且MainController需要顯示SubController2,我總是在SubController1範圍內設置MainController參考變量,以便它可以將更改傳送到MainController。這意味着無論何時MainController創建SubController1它必須將SubController1MainController參考變量設置爲self

我應該擔心這種通信方式的內存使用情況嗎?使用通知來處理這種行爲會更好嗎?我現在使用的方法所獲得的主要好處是,如果需要,它可以非常容易地在視圖控制器之間共享信息。任何想法都不勝感激。

+0

使用customDelegate或NSNotificationsCenter – Madhu

回答

2

在其他視圖中處理更改,操作或用戶交互是delegates的基本用例。最好的做法是讓主控制器成爲第一個/第二個視圖控制器的代表,然後當子控制器中發生事件時,他們會在其代表上調用某些方法,然後可以採取任何必要的行動。

以您描述的方式傳遞引用將不會有明顯的內存影響,但它會將代碼緊密地耦合到MainController,這應該避免。您應該努力靈活處理未來的潛在變化。如果您轉換爲通用應用程序並且iPad UI具有截然不同的結構,會發生什麼情況?對於委託人,您只需確保控制器之間的合同完好無損,但可以自由更改任何基礎實施細節。

保持值/狀態在視圖之間的同步的其它選項包括:

相關問題