使1 UITableView滚动到与另一个UITableView相同的行

时间:2010-06-14 17:17:45

标签: objective-c iphone uitableview uiscrollview

我的屏幕上有2个UITableViews。

当用户滚动1 ...我需要另一个1也滚动到同一行。

我假设我需要找到一个“tableViewDidScroll”方法......并以某种方式检测“whichRowIsDisplayed”值...然后将另一个tableView设置为“displayThisSameRow”。

我找不到我需要的这3种方法中的任何一种。

帮助!

(编辑:两个表总是具有相同的行数)

1 个答案:

答案 0 :(得分:1)

如果表中的行高度相同,则可以使用UIScrollView方法直接设置contentOffset。

为两个表实现委托方法scrollViewDidScroll :.无论哪个表进行调用,都要将另一个表的contentOffset设置为匹配。您应该跟踪何时设置偏移量以避免不必要的呼叫。

// table1, table2, tableBeingScrolled all members
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
  if ( scrollView != tableBeingScrolled ) {
    if ( scrollView == table1 ) {
      tableBeingScrolled = table2;
      table2.contentOffset = table1.contentOffset;
      tableBeingScrolled = nil;
    }
    if ( scrollView == table2 ) {
      tableBeingScrolled = table1;
      table1.contentOffset = table2.contentOffset;
      tableBeingScrolled = nil;
    }
  }
}

如果表格具有不同的行高,您可以使用相同的技术,但需要更多的计算来确定要分配的偏移量。