【问题标题】:How might I create one UITableView with two data sources如何使用两个数据源创建一个 UITableView
【发布时间】:2014-11-23 08:23:47
【问题描述】:

我有一个带有一个 UITableView 的 UIViewController。但是那个 tableView 有两个数据源。基本上,一个 UIButton 将决定哪个数据源处于活动状态。我该怎么做?没有像

这样的方法
 [self.tableView reloadData:myDataSourceArray];

这对于区分使用哪个数据源以及使用哪个 UITableViewCell 扩展非常有帮助。那我该怎么办呢?

我说按钮是为了保持简单,但实际上,dataSource_1 是从服务器预加载的,而 dataSource_2 是由 UISearchBar 加载的。

【问题讨论】:

  • 就这么做吧。在您的委托/数据源中检查一个布尔值,该值决定使用哪个数组。切换时执行reloadData。或者有一个设置为一个或另一个的指针,当您更改指针时,同样执行reloadData

标签: ios uitableview datasource


【解决方案1】:

您应该使用 BOOL 来跟踪哪个数据源处于活动状态。这是必要的,因为您还使用了两个不同的 UITableViewCell 扩展类。说

BOOL dataSourceOneIsActive;

当您执行cellForRowAtIndexPathnumberOfRowsInSection 时,您可以检查

if(dataSourceOneIsActive)

确定要使用的计数、单元格和数据源。

另一方面,如果您使用 NSMutableArray 的想法,那么当需要决定使用哪种单元格类型时,您的工作就会完成。

【讨论】:

    【解决方案2】:

    如何创建一个可变数组,比如objectsToDisplayArray,然后单击按钮,分配您想要的源,然后调用reloadData。如果要更改源,只需从 objectsToDisplayArray 中删除所有对象,添加新数据,然后重新加载。

    【讨论】:

    • 简单地拥有一个引用活动数组的属性并根据需要分配它会更有效 - 没有理由继续重建数组
    • 是的,当你来回切换时不断地重新加载一个可变数组有点疯狂。您应该以某种方式在两个数组之间进行选择。
    猜你喜欢
    • 2016-08-14
    • 2022-01-08
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2017-01-29
    • 2012-06-19
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多