0

我正在做一个项目,我需要在一个故事板上创建两个 UITableView。处理这个问题的最佳方法是什么?我不确定我是否喜欢 viewcontroller 作为两个 uitableviews 的委托和数据源。

4

3 回答 3

2

好吧,你有几个选择。第一个也是最明显的是,您将两个表视图与您的单个视图控制器一起用作它们的委托/数据源。如果你走这条路,真的没有太多的开销。大多数情况下,这里和那里只是一个 if 语句,并且可能在 cellForRowAtIndexPath: 中有一个不同的单元格标识符。

但是,如果您对组织更感兴趣,您可以创建 UITableView 的子类并将其委托/数据源设置为自身。这样,每个实例都在内部处理其委托/数据供应,它甚至不需要与包含它的视图控制器通信,除非您特别需要/告诉它。

于 2013-08-14T20:21:09.583 回答
1

这一点都不难。创建您的视图控制器,将您的两个表视图添加到其中并将它们连接到 IBOutlets(或以编程方式创建它们并将它们分配给属性/变量)。你的 UITableViewDataSource 和 UITableViewDelegate 方法看起来像这样:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == self.firstTableView) {
        return [self.firstDataSource sectionCount];
    }
    else if (tableView == self.secondTableView) {
        return [self.secondDataSource sectionCount];
    }
    NSAssert(NO, @"unknown tableView!");
    return 0;
}

只需确保您的委托和数据源方法检查哪个 tableView 正在请求数据(或通知您操作/更改)并确保您的代码正确处理这两种情况。

于 2013-08-14T20:30:49.557 回答
0

您可以根据需要在超级视图上放置任意数量的 UITableView。包含视图控制器不必是任何一个的数据源或委托,但它可以是两者。

于 2013-08-14T20:22:49.247 回答