由于要实现表格横向滚动时第一列保持不动,所以这里用了两个TableView(第一列是一个单独的TableView,右边整个是一个TableView)。然后我通过在tableView: didSelectRowAtIndexPath: 方法里触发另一个表格的selectRowAtIndexPath 事件来实现选中行同步,但是这样的话同步表格的选中行的高亮效果会有延迟,动图中第四次点击可以看得比较明显。
小弟新学iOS不久,求教各位大神有什么好的解决方案!

解决方案 »

  1.   

    后面这个tableView横向滚动是怎么做的?
      

  2.   


    放到scrollview里了
      

  3.   


    放到scrollview里了那你干嘛要用两个tableView?用同一个不就行了?
    自定义个cell,主要分两个部分,左边是一个uilable,右边是一个scrollView不就行了?
      

  4.   


    试了下这个方案,这样的话每个cell里的横向滚动是独立的,怎么样实现滚动同步呢?而且在cell的右侧(scrollview)点击时,不会触发选中事件...
      

  5.   


    试了下这个方案,这样的话每个cell里的横向滚动是独立的,怎么样实现滚动同步呢?而且在cell的右侧(scrollview)点击时,不会触发选中事件...那你两个tableView上下同时滚动是如何实现的
      

  6.   


    在scrollViewDidScroll 做的处理,但是对于cell 里的scrollview 就不懂该怎么处理了,包括怎么获取当前滚动的scrollview的cell 和让其他cell里的scrollview发生同样的位移。
      

  7.   


    在scrollViewDidScroll 做的处理,但是对于cell 里的scrollview 就不懂该怎么处理了,包括怎么获取当前滚动的scrollview的cell 和让其他cell里的scrollview发生同样的位移。感觉你这样确实有点难搞啊。点击的时候,同一行可以认为是一个view,然后滚动的时候右侧又是一个整体的view,这两个view冲突了呀暂时想不出更好的办法,不好意思
      

  8.   

    请问下楼主,怎么做到点击右边的cell,左边也会高亮的效果,我现在一直没做到
      

  9.   

    tableview selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionTop
      

  10.   

    右边tableview的背景可以改成透明,左边tableView大小改成屏幕这么大,选中的时候直接选中左边就行
      

  11.   

    楼主,我今天也遇到这个问题,现在我解决了,办法是在cell上添加长按手势,并设置时间为0.1秒,然后在手势状态添加视图到keywindow上,以下是我的代码,希望可以帮到你:
    - (void)longGsAct: (UILongPressGestureRecognizer *)sender {
        NSLog(@"cell长按手势");
        
        // 转换坐标
        CGRect newRect = [sender.view convertRect:sender.view.bounds toView:nil];
        
        // view距离window左右两边各5,高度30
        UIView *v = [[UIView alloc]initWithFrame:CGRectMake(5, newRect.origin.y, [[UIScreen mainScreen] bounds].size.width - 10, 30)];
        v.backgroundColor = [UIColor colorWithRed:242.0/255 green:242.0/255 blue:242.0/255 alpha:0.5];
        UIApplication *ap = [UIApplication sharedApplication];
        v.tag = 25692569;
        
        // 添加view
        if (sender.state == UIGestureRecognizerStateBegan) {
            [ap.keyWindow addSubview:v];
        }
        
        // 移除view
        if (sender.state == UIGestureRecognizerStateEnded) {
            [[ap.keyWindow viewWithTag:25692569] removeFromSuperview];
        }
    }