我正在寫一個相當複雜的iPad應用程序 - 我的第一個較大的應用程序。自定義UIView作爲UITableView委託和數據源?
這個應用程序有一些自定義UIViews呈現相當複雜的數據,包括一個表。這些視圖並不佔用整個屏幕,並且在任何時候都可以(也可能會)在屏幕上顯示其中的許多視圖(儘管只有一個視圖處於顯示錶格的「展開」狀態)。
這裏是一個要傳達的基本原則一個基本的例子:
請注意,這些事情不應該在popovers;相反,FamilyViews展開以顯示其詳細數據。 (並且請注意,這個模型只是爲了這個問題而創建的,並且與我的界面的外觀沒什麼關係;我知道這不是很好的屏幕設計)
我還沒決定誰把爲這些自定義視圖的委託和數據源:
- 使得的ViewController當前屏幕的委託和數據源是unelegant,因爲它不只是一個表是VC的主視圖的一部分。
- 製作查看本身委託和數據源對我來說似乎有點不可思議,因爲它感覺就像讓視圖過於活躍一樣;把它變成一個半控制器。
- 製作底層模型對象數據源似乎過於緊密耦合,並且也打破了MVC。它並沒有回答誰應該是代表的問題。
我傾向於爲這些「FamilyViews」委託和數據源分別創建自己的表。對這些表的操作必須與FamilyView的代理(ViewController)耦合,但是這不應該是一個問題,應該是這樣嗎?
任何人對此有一些輸入?
感謝您的回答。我曾想過這件事。所以你說我應該創建一個新的類'FamilyMembersTableViewController'(它不是一個viewController的子類)並且實例化每次我需要顯示一個新的tableView?這將成爲「家庭」模型和「FamilyView」的中介?這將保持MVC清潔,但似乎有點不必要,因爲無論如何FamilyView是非常專業的,並且會與他們的tableControllers緊密結合。 – fzwo
我認爲一個單獨的控制器是最好的解決方案。在ver。 2.0的應用程序,你會實現所有這些驚人的酷的東西,這隻會在控制器中有意義,然後你將不得不重構。如果你現在遵循MVC的方式,你會在以後感謝你。 :) –
我越想到這一點,就越清楚,這是要走的路。我已經實現了這一點,它沒有不良副作用。謝謝你幫助我看到本應該顯而易見的解決方案:)(儘管現在我面臨着更加棘手的問題:我應該怎樣命名這個類?爲了保持這個例子,「FamilyMemberTableViewController」看起來既明顯又混亂,因爲它是既不是'UIViewController'也不''UITableViewController'子類,但它*是'UITableView'的控制器。) – fzwo