我有一个奇怪的设计案例,要实现我需要在同一个视图上放置两个UITableViews。我只想使用部分,但我需要第二个表上的索引。
我希望他们同时滚动,就像它们实际上是同一个表视图的两个部分一样。这可能吗?
这是一个基本的模型,说明了原因:
据我所知,你无法移动索引。此外,当您向表中添加索引时,它会显示在整个tableview上,而不仅仅是一个部分。
如果我必须将它作为两个表视图实现,它们都需要像它们一样滚动。如果可以使用部分来做到这一点,那就更好了。
答案 0 :(得分:24)
<强>更新强>
在看到您的更新后,我的旧答案不是很好,但我会将其之前的答案留给其他想要它的人。
新答案 - 这取决于您希望表格同步的方式。
如果你知道
top 5
然后,您可以计算top 5
表顶部可见的单元格。您可以使用此信息将底部表格滚动到正确的索引。
旧答案
我和其他人不相信你为什么要这么想,或者我是否会误解,但这很简单。
UITableView
是UIScrollView
的子类,因此您可以将自己设置为UITableViewDelegate
并覆盖
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
{
UITableView *slaveTable = nil;
if (self.table1 == scrollView) {
slaveTable = self.table2;
} else if (self.table2 == scrollView) {
slaveTable = self.table1;
}
[slaveTable setContentOffset:scrollView.contentOffset];
}
这给了我一些看起来像这样的东西:
顶部UITableView
为self.table1
,底部为self.table2
如果任一表格滚动,则滚动在另一个表格中进行镜像。
答案 1 :(得分:1)
从模型看来,这似乎可以通过一个UITableView
来完成,有两个部分。
您可以维护两个集合(每个部分一个),而不是维护两个tableView。然后在cellForRowAtIndexPath
中根据indexPath中指定的部分选择要使用的集合。
答案 2 :(得分:1)
在swift中这段代码:
func scrollViewDidScroll(scrollView: UIScrollView) {
if tb_time1 == scrollView {
tb_time2.contentOffset = tb_time1.contentOffset
}else if tb_time2 == scrollView {
tb_time1.contentOffset = tb_time2.contentOffset
}
}