0

我有三个 UITableView,它们都需要访问基本相同的数据。唯一的区别是每个表视图如何格式化数据。实现这一点的最佳方法是什么?我在想,如果每个表视图都有某种标签,我可以在发回 UITableViewCell 时从我的数据源中引用它。

4

2 回答 2

1

每个数据源调用都会传入UITableView请求信息的对象。将此 tableview 与您的三个进行比较,您可以确定它是哪一个,并以不同的方式格式化数据。我可能会为每个 tableview 实现单独的方法,并将数据源方法传递给适当的方法。然后另一种方法将创建自定义单元创建和设置。例如对于 cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == [self tableView1])
        return [self tableView1:tableView cellForRowAtIndexPath:indexPath];
    if (tableView == [self tableView2])
        return [self tableView2:tableView cellForRowAtIndexPath:indexPath];
    if (tableView == [self tableView3])
        return [self tableView3:tableView cellForRowAtIndexPath:indexPath];

    Assert0(NO, @"UITableView not recognized!");
    return nil;
}

- (UITableViewCell *)tableView2:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Do normal cell creation for tableView1 here
}

我不知道从同一个数据源运行多个 UITableViews 是否有任何问题,所以请小心行事。

于 2013-08-06T17:35:08.333 回答
1

查看单例设计模式 -是一个关于如何为 iOS 实现的示例。

于 2013-08-06T17:09:56.117 回答