Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 具有可锁定列和水平滚动的表视图?_Ios_Uitableview_Uiscrollview_Uicollectionview - Fatal编程技术网

Ios 具有可锁定列和水平滚动的表视图?

Ios 具有可锁定列和水平滚动的表视图?,ios,uitableview,uiscrollview,uicollectionview,Ios,Uitableview,Uiscrollview,Uicollectionview,我希望创建一个具有以下功能的表: 与其余部分水平滚动的可变列数 桌子 不水平滚动的可变可锁定列数 和桌子上的其他人一起 可排序列标题 垂直滚动 水平滚动 我见过人们使用不同的策略来实现类似的功能,包括: UITableview,每个表单元格包含一个UITableview 将变换90度放置在另一个UIScrollview中以处理水平滚动。然而,为了使其正常工作,我需要为每个单元格使用锁定的旋转表格视图,如果我想滚动整个主表格,而不是每个表格单元格中的表格,那么单元格取消查询似乎会有一些有趣的地

我希望创建一个具有以下功能的表:

  • 与其余部分水平滚动的可变列数 桌子
  • 不水平滚动的可变可锁定列数 和桌子上的其他人一起
  • 可排序列标题
  • 垂直滚动
  • 水平滚动
我见过人们使用不同的策略来实现类似的功能,包括:

  • UITableview,每个表单元格包含一个UITableview 将变换90度放置在另一个UIScrollview中以处理水平滚动。然而,为了使其正常工作,我需要为每个单元格使用锁定的旋转表格视图,如果我想滚动整个主表格,而不是每个表格单元格中的表格,那么单元格取消查询似乎会有一些有趣的地方
  • 数字1的变体,但对每个tablecell使用自定义uiview而不是uitableview。(目前领先候选人)
  • 自定义UIScrollview类,用于复制 UITableview,具有添加的功能,如。似乎是最灵活和最难实现的
  • 是否有人有任何示例/建议/建议,说明哪些内容易于启动和运行,具有出色的滚动性能和灵活性

    我仍处于计划阶段,试图找出实现这一点的最佳方式,并已提出了一些想法,其中包括两个带同步滚动的UITableView。左表视图将用于锁定的列,右表将用于水平滚动表。这两个表将使用与tablecells相同的uiview,每个列都有自定义uiview对象

    更新

    能够在锁定的列和水平滚动的表之间同步滚动似乎非常简单,到目前为止,这似乎是我倾向于的选项(#2)。是否有人发现这种方法存在任何潜在的陷阱或障碍

    我所追求的理想成品的一个很好的例子可以在Roambi应用程序中找到(下面的屏幕截图)


    Thx

    我已经在自己的一个应用程序中完成了这项工作-看看。它的委托/数据源调用与UITableView的调用类似。

    我通过三个视图实现了这一点,通过标准协议和一个视图控制器进行管理。在这个解决方案中,您只关心链接两个表视图控制器的垂直滚动。水平滚动通过一个环绕表格视图主体的滚动视图免费提供。我使用以下UITableViewDelegate函数获取锁定的列标题:

    -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
    

    视图结构

    - View - The VCs root view
      - Table View     - rowHeadersTable                 -  the locked left hand columns
      - Scroll View    - rowBodyHorizontalScrollView     - a container of the table body
        - Table View   - rowBodyVerticalContentTableView - the table body, as wide as it needs to be beyond the frame of the parent scroll view
    
    视图控制器

    - View - The VCs root view
      - Table View     - rowHeadersTable                 -  the locked left hand columns
      - Scroll View    - rowBodyHorizontalScrollView     - a container of the table body
        - Table View   - rowBodyVerticalContentTableView - the table body, as wide as it needs to be beyond the frame of the parent scroll view
    
    实施的协议:

    @interface LockedTableColumnsViewController : UIViewController <UITableViewDataSource,UITableViewDelegate>
    
    管理RowHeaderTable和rowBodyVerticalContentTableView之间的垂直滚动链接:

    -(void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        if (scrollView == self.rowBodyVerticalContentTableView) {
            [self.rowHeadersTable setContentOffset:CGPointMake(self.rowHeadersTable.contentOffset.x, scrollView.contentOffset.y)];
        }
        else if (scrollView == self.rowHeadersTable) {
            [self.rowBodyVerticalContentTableView setContentOffset:CGPointMake(self.rowBodyVerticalContentTableView.contentOffset.x, scrollView.contentOffset.y)];
        }
    }
    

    注意:由于它使用了原型单元格等,因此对于长(意味着高)表,这将表现得很好。但是,它不会针对水平密集的行内容进行优化。我的表体内容是文本和有限数量的列。如果您没有这种奢侈,您可以始终将表的行主体设置为水平流动的集合视图,但随后必须链接所有行集合视图偏移(我想是通过可见单元格)。那是另一种动物。祝你好运

    如果您的目标操作系统早于iOS 6.0,则可以使用所述的嵌套表视图。不要忘记同步每个水平表的内容偏移量

    但是如果你的目标是iOS 6.0+,你可以使用它,但是它的性能非常差,你不能为它的列设置不同的大小


    最好的选择是编写自己的UICollectionView布局

    是的,我偶然发现了这个库,尽管它似乎没有对锁定的列进行排序。似乎需要更多的工作来实现该功能,然后尝试推出我自己的?@s.newave您必须推出自己的解决方案来解决该问题-就像使用普通的旧UITableView一样。我们的产品内置了所有这些功能: