【发布时间】:2015-10-31 00:43:03
【问题描述】:
我在 ViewController 中嵌入了 3 个 UIViews Header/Tabar/Container 一个 ScrollView。所以这是我的结构:
在 ContainerView 中,我加载了一个 UICollectionView(像这样):
let controller = storyboard!.instantiateViewControllerWithIdentifier("myCollectionViewController") as! myCollectionViewController
controller.delegate = self
self.addChildViewController(controller)
controller.view.backgroundColor = UIColor.brownColor()
self.containerView.addSubview(controller.view)
controller.didMoveToParentViewController(self)
一切正常,UICollectionView 的每个单元格都已加载,...唯一的问题是,所有隐藏的单元格(甚至是隐藏的单元格的所有部分)都不可选择。我的意思是我的函数“didSelectRowAtIndexPath”不适用于第一个屏幕外的每个像素。这是我的问题的一个方案:
这是我在滚动之前所拥有的(左侧是一个方案,右侧是我在屏幕上实际拥有的)-> 这里一切正常:
这是我滚动后的样子(左边是方案,右边是我实际在屏幕上的)->只有滚动前显示的像素可以调用“didSelectRowAtIndexPath”:
问题在于 self.view.frame 没有很好地刷新。您知道我应该如何更改此框架以及何时更改吗?
【问题讨论】:
-
标题和标签栏是如何滚动的。你有那个代码吗?请添加它。
-
@hasan83 我不太明白你的问题。我的代码比较重,哪部分代码可以帮到你?
-
滚动集合视图不会滚动标题和标签栏。您如何滚动那些允许集合视图获得更多空间的内容?显然,您添加了一些代码来处理该逻辑。添加该代码和触发它的位置。
-
@hasan83 不,滚动集合视图也会滚动标题和 TabBar,因为这 3 个视图嵌入在 UIScrollView 中。我在情节提要中这样做了......所以在我的主视图中,我有一个 ScrollView,我在其中添加了这 3 个视图(Header + TabBar + Container(其中有 collectionViewController))
-
在移动开发中,您不能将滚动条嵌入到彼此内部,您的结构是错误的。基本上,您的容器框架很小,并且这些像素不可点击,因为它们超出了容器边界。您只能看到它们,因为边界的容器视图掩码设置为 false。在滚动视图中也有 uicollectionview 会失去单元格的可重用性功能,这将导致内存和性能问题。
标签: ios swift scroll uicollectionview didselectrowatindexpath