0

我需要實施的項目清單與2個不同的觀點:文本列表和照片列表,類似於什麼在iPad上的iBooks的作用:的多表視圖和多收取權利模式觀

iBooks view type selector

然而,我有4個不同類別的項目:電影,音樂,遊戲和書籍,每一個都有不同的特點,需要顯示不同的信息。由於標籤欄已在使用中(這是應用程序的庫部分),用戶可以使用下拉菜單更改類別,而不是標籤欄。

我的目的是爲照片列表的項目和集合視圖的文本列表使用表格視圖。對於每個項目類別,表視圖和集合視圖的數據源可以相同,因爲集合視圖只顯示較少的信息。

我的問題是使用哪種模式。我可以有:

  • A. 4表視圖控制器+ 4收集視圖控制器
  • B. 1個表視圖控制器+ 1點的集合視圖控制器(它們分別管理1個表視圖和1個的集合視圖,與4種表格視圖單元格,4種類型的集合視圖單元格)。
  • C. 1個表視圖控制器+ 1個集合視圖控制器(其管理分別爲4個表視圖和4個集合視圖)
  • D. 4視圖控制器(每個管理表1和1個的集合視圖,共享數據源)
  • E. 1視圖控制器(管理所有內容,1個表視圖和1個集合視圖,4個不同的表視圖單元格,4個不同的集合視圖單元格)。

我相信解決方案A和D應該是最簡潔的代碼,B最簡單的實現。

回答

0

我會推薦一種混合方式,使用B作爲主控制器,但是對每種單元使用控制器,並根據所選類別設置此控制器。

UPDATE:在所述受試者重新考慮更後我將使用選項D.一個視圖控制器爲每個充當表視圖和收集視圖數據源和代表類別。

0

我會使用B,並嘗試不要觸及它們太多,因爲我添加新的內容。

對於集合視圖,

  • 外觀可以用筆尖進行定製,也許applyLayoutAttributes:和/或每個內容類型的自定義佈局(如果你想不同的動畫)。
  • 這些操作可以像這樣實現:長按手勢識別器,使用locationInView:indexPathForItemAtPoint:獲取按下的最後一個視圖,彈出UIMenuItem,並在視圖上應用該操作(執行此操作的一種方式)。

對於每種內容類型,我都會將操作及其實現放在單獨的類上。您可以使用命名約定「content-class-name + Actions」來查找這樣的類,或者使用控制器中的工廠模式來獲取它。然後注入所需的任何服務,並傳遞與啓動操作的視圖相關的操作和模型類。這部分也適用於桌子。