我正在开发一个项目,我需要在一个故事板上创建两个UITableView。处理这个问题的最佳方法是什么?我不确定我喜欢viewcontroller是两个uitableviews的委托和数据源。
答案 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。包含视图控制器不一定是数据源或委托,但它可以用于两者。