在UICollectionView的单元格中使用UITableViews有什么限制吗?
我试图找到一些这样做的示例项目,但没有运气
答案 0 :(得分:4)
这是你需要注意的问题。如果您的集合视图单元格包含表格视图,并且您点击单元格(而不是表格视图),则默认情况下,集合视图会将其自身设置为突出显示(对于标准单元格,它不执行任何操作)。但是,在此过程中,它还会将表中的每个单元格设置为突出显示,这很糟糕,但有点预期。如果你考虑一下,表格单元格会做同样的事情 - 所有单元格的子视图,如果它们响应setHiglighted
,都会将该消息传递给它们。这是单元格中标签的文本在突出显示时改变颜色的方式。
您可以通过阻止突出显示集合视图的委托中的单元格来解决此问题。
答案 1 :(得分:1)
我没有明显的技术限制。 UITableView
中的UITableView
是可能的,UICollectionView
与编程逻辑的观点非常相似。
但是,在集合视图或表格视图中滚动会对性能产生巨大影响。
首先。您需要仔细编码,以避免对tableView:cellForRowAtIndexPath:
和collectionView:cellForItemAtIndexPath:
方法进行任何表面调用。如果您在开始冒险之前尝试在集合视图或表视图中使用可重用单元格,请确保彻底了解这些调用背后的逻辑。
二。如果两个组件都是可滚动的,则层次结构中两个视图控制器的panGestureRecognizer存在并发问题,您必须自行解决。
在UITableView
内搜索UIScrollView
的实现,反之亦然,以了解可能出现的问题。
答案 2 :(得分:1)
我试图找到一些这样做的示例项目
我认为您不需要示例项目 - 只需这样做。
-collectionView:cellForItemAtIndexPath:
应该返回UICollectionViewCell
。 UITableView不从该类继承,因此要在集合视图中使用表,您需要创建一个包含UITableView的UICollectionViewCell子类。除了可能的性能问题之外,我没有看到这样做的问题。如果您一次只能在集合视图中看到一个或两个单元格,则可能不是问题。不过,我会避免尝试做一些像十几个小桌子的网格。试一试,看看它是怎么回事。