我需要实现一个包含2种不同视图的项目列表:文本列表和照片列表,类似于iPad上的iBooks:
但是,我有4种不同类别的项目:电影,音乐,游戏和书籍,每种都有不同的特征,需要显示不同的信息。类别将由用户使用下拉菜单更改,而不是标签栏,因为标签栏已在使用中(这将是应用程序的库部分)。
我的目的是使用表视图作为照片列表的项目和集合视图的文本列表。对于每个项目类别,表视图和集合视图的数据源可以相同,因为集合视图只显示较少的信息。
我的问题是使用哪种模式。我可以:
我认为解决方案A和D在代码方面应该是最干净的,B最容易实现。
答案 0 :(得分:0)
我建议使用B作为主控制器的混合方法,但是对每种单元使用控制器,并根据所选类别设置此控制器。
更新:在主题中重新考虑更多后,我将使用选项D.每个类别的一个视图控制器,充当表视图和集合视图的数据源和委托。
答案 1 :(得分:0)
我会使用B并尝试在添加新内容时不要过多地触摸它们。
对于集合视图,
applyLayoutAttributes:
和/或每种内容类型的自定义布局(如果您需要不同的动画)。locationInView:
和indexPathForItemAtPoint:
按下最后一个视图,弹出UIMenuItem
,然后在视图上应用操作(一种方法)。对于每种内容类型,我会将操作及其实现放在单独的类中。您可以使用命名约定“content-class-name + Actions”来查找此类,或者使用控制器中的工厂模式来获取它。然后注入它需要的任何服务,并传递与启动该操作的视图相关的操作和模型类。这部分也适用于表格。