我正在使用ECSlidingViewController,这是一个提供侧抽屉效果的库。我的应用程序打开一个(导航控制器,持有)“附近”结果的表视图控制器,单元格转到滚动视图控制器。
隐藏的左侧菜单是一个表视图控制器(不同类),有几个选项,其中2个是其他表视图控制器,它们将使用相同的布局,单元原型和详细滚动视图作为上面的表视图启动。
我想知道是否更好的设计是使用某种属性(如enum'd typeOfDisplay)创建更通用的tableView,这可以让我有条件地管理不同的细微差别,例如从服务器/ CoreData填充单元格,导航栏标题,排序顺序,切换自动更新,可编辑性等 - 或 - 如果我应为每个不同的视图控制器创建一个NavigationController-&gt; TableViewController-&gt; ScrollViewController(A'附近','特色'和'保存')< / p>
我想重用我的表视图,因为单元格/显示/细节将是相同的,但填充表格的方法是不同的,我不想做一些难以修改的东西。
修改
如果您熟悉tab-bar控制器内的表视图,则实现细节应该几乎相同。
答案 0 :(得分:3)
最好将视图配置放入视图控制器中。但是可以有方法重用配置操作。
我遇到了和你一样的情况。我决定用Strategy Pattern来重构我的控制器。我将所有与数据相关的东西放入符合TableDataManager
和UITableViewDataSource
协议的UITableViewDelegate
类中,并将多态性应用于它以配置单元格中的数据和{{{{ 1}}在运行时的不同情况下。
所有相同的操作都在UITableView
中实现,细微差别被TableDataManager
的子类覆盖。通过为视图控制器分配适当的TableDataManager
子类,您无需在此处复制和粘贴相同的单元格/显示/详细操作。
这是我的经历。希望它会有所帮助。
答案 1 :(得分:-1)
我建议您为不同的数据源使用不同的视图控制器。最初把它们放在一个地方听起来不错,但随着时间的推移,你可能需要为每个表视图添加不同的功能,而你的视图控制器将是一个可怕的混乱。