2013-03-17 80 views
0

非常基本的問題,我似乎無法找到直接的答案。iOS組件可重用性:視圖和視圖控制器

所以這裏的交易:我有一塊用戶界面,我想在一個界面中重複使用。特別是,它應該作爲子視圖包含在作爲導航堆棧一部分的父視圖中,但也可用作獨立模式視圖。有問題的子視圖只是一個自定義的UITableView,其子控制器實現了其數據綁定方法。

子視圖應該綁定到特定的模型對象,從中獲取其所有數據。換句話說,它的控制器爲基於該目標模型對象的UITableViewDataSource實現必要的數據綁定方法。

在我看來很明顯我需要創建一個控制器來表示這個可嵌入的子視圖,因爲這些數據綁定方法的實現在所有實例中都是相同的,但似乎iOS 5之前(我目前需要支持iOS 4+)強烈建議不要在其他視圖控制器中嵌入視圖控制器。

這完全違反MVC模式蘋果據說僱用可可(我仍然不相信他們已經實現了什麼是MVC)。如果我不允許嵌入子視圖控制器,我應該如何在不同的父接口中重用我的子視圖控制器的數據綁定/模型邏輯?

回答

1

而不是使用一個視圖控制器提供的數據,你可以創建一個控制器類(只是一個普通的NSObject子類)和實例爲需要嵌入您的子視圖每個視圖控制器。

編輯:所以你會做一些像[[MyController alloc] initWithTableView:tableView]

+0

...誰創建tableView? – devios1 2013-03-17 21:13:35

+0

哦,我看到了,我只是將tableView添加到每個需要它的父接口,然後使用此自定義控制器類的實例將其「綁定」到我的數據源。好的,可以工作。 – devios1 2013-03-17 21:14:37

+0

或者你可以在'MyController'上只有'tableView'屬性...你將在視圖控制器的初始化方法中實例化一個MyController對象,並將它存儲在一個實例變量中。然後在'viewDidLoad'中,你可以用全新的'UITableView'對象設置'tableView'屬性。 – fumoboy007 2013-03-17 21:36:43

相關問題