单个视图中的两个UITableView

时间:2013-08-14 20:16:06

标签: ios uistoryboard

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

这一点都不难。创建视图控制器,向其添加两个表视图并将它们连接到IBOutlets(或以编程方式创建它们并将它们分配给属性/ ivars)。您的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要求数据(或通知您操作/更改)并确保您的代码正确处理这两种情况。

答案 2 :(得分:0)

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