UIViewController设计模式多个UITableViews

时间:2012-07-21 13:42:01

标签: iphone objective-c ios ipad uitableview

我有一个在UITableView中显示商店列表的视图。

用户应该可以修改某些过滤器显示的商店。 例如,应该可以显示商店按名称排序(第一个字母作为节标题)。此外,用户应该能够仅显示收藏夹按类别对商店进行排序(类别名称是部分标题):

enter image description here

我不想要一个表视图,处理所有过滤器,因为我认为这将是一堆if-then-else标签,具体取决于当前的过滤器。所以我决定创建 4 UITableViewControllers ,每个处理一个过滤器。

这正是我需要的,到目前为止还没有冗余,因为tableVC委托和数据源方法是需要以不同方式实现的方法。

但是现在我确实需要一个根据表格滚动位置出现的标题。这在所有4个表中完全相同。但是我现在应该如何解决这个问题呢?

在四个 UITableViewControllers 冗余中的每一个中实施 UIScrollViewDelegate 方法?创建一个处理scrollView方法的ParentViewController(由于表数据源和委托方法,这不会那么容易......

有任何建议如何正确解决这个问题?你会怎么做?

我希望得到任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

我会创建一个父类,负责处理标题并从中导出UITableViewControllers。

超类负责公共元素(如标题),子类负责实际显示。

或者,您可以创建一个重载方法,该方法返回要显示的单元格数组。

存储此数组,当委托(在超类中)询问“单元格数据”时,请为其提供数组中的相应元素。