2011-12-01 26 views
2

我在第一次在我的應用程序中使用UISplitViewController。主視圖控制器是一個表視圖控制器,而詳細視圖控制器只是一個普通視圖控制器。UISplitViewController - 用於在視圖控制器之間進行通信的最佳設計模式

對於從主站到細節的通信,我將詳細信息設置爲主站的代表。但我也需要主人能夠響應細節的變化(相應的表格視圖單元格的內容會更新以反映變化。)

對於主人也可以成爲細節的代表嗎?或者這是不好的編程習慣?有沒有更好的方法呢?

感謝您的任何建議。

回答

1

您可以爲您的模型提供特定於您的控制器共享的委託協議。該協議可能有諸如itemContentDidChange:withIndex:等的方法,爲聽衆提供有關模型中更改內容的信息。如果您將兩個控制器註冊爲共享模型的委託,都實現此共享協議,則跨控制器依賴關係將被刪除而不引入任何新的依賴關係。

但是,這只是我的看法,這是相當主觀的。你的方法也非常好 - 我認爲主人在細節是主人的代表的同時成爲細節的代表是絕對可以的。這比給每個控制器指向另一個控制器要好,因爲你不需要考慮保留週期。

+0

優秀的答案,非常感謝!你的方法實際上更適合我試圖達到的目標。謝謝! –

0

這聽起來像你只需要一個委託,因爲detailView將只需要告訴masterView'reloadData'列表上。它們都使用的數據應該是真正共享的,因此可以在創建時作爲指針傳遞給detailView,然後在完成之前告訴masterView tableView重載數據,然後修改它自己。

0

這對他們來說是彼此代表完美的。沒有涉及所有權,所以沒有循環引用。

相關問題