滚动视图只显示最后一个动态添加的子视图
Posted
技术标签:
【中文标题】滚动视图只显示最后一个动态添加的子视图【英文标题】:Scrollview only showing last dynamically added subview 【发布时间】:2016-08-08 09:19:49 【问题描述】:我正在尝试将我的故事板中的视图添加到 UIScrollView。我需要将视图添加 X 次,并使用 for 循环来完成此操作
sectionViewController = self.storyboard?.instantiateViewControllerWithIdentifier("SectionViewController") as! SectionViewController
...
for index in 0..<numberOfSections
let subViewFrame = CGRectMake(self.scrollView.frame.size.width * CGFloat(index), -64, self.view.frame.size.width, self.view.frame.size.height)
let subView = sectionViewController.view
subView!.frame = subViewFrame
subView.tag = index
self.scrollView .addSubview(subView!)
ScrollView 是这样以编程方式创建的
self.scrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)
self.scrollView.pagingEnabled = true
self.scrollView.alwaysBounceVertical = false
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * CGFloat(numberOfSections), 0)
self.scrollView.scrollsToTop = false
scrollViewFrame = CGRectMake(0, 100, self.scrollView.frame.size.width, self.scrollView.frame.size.height)
self.scrollView.frame = scrollViewFrame
self.view.addSubview(self.scrollView)
所以我在此之后添加子视图。问题是只显示最后一个子视图。所以当 numberOfSections = 10 时,只显示第 10 个子视图。我在这里做错了什么?
【问题讨论】:
【参考方案1】:不是为所有索引分配相同的视图作为子视图(让 subView = sectionViewController.view),而是为每个索引创建不同的 SectionViewController 视图实例
【讨论】:
我试过了,现在根本看不到任何子视图。你说的很有道理,所以它一定是别的东西。【参考方案2】:根据@Annie_Dev 的建议尝试为 even 分配不同的颜色并添加子视图以检查是否添加了子视图。
【讨论】:
现在和所有子视图都获得了不同的背景颜色,但只有最后一个显示故事板中的子视图。不知道可能出了什么问题。【参考方案3】:所以经过大量的挖掘和尝试,我终于找到了问题所在。我的子视图中有很多相互冲突的约束。一旦我修复了这些,一切都会正常显示。
【讨论】:
以上是关于滚动视图只显示最后一个动态添加的子视图的主要内容,如果未能解决你的问题,请参考以下文章