【问题标题】: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 个子视图。我在这里做错了什么?

【问题讨论】:

    标签: ios swift uiview uiscrollview


    【解决方案1】:

    不是为所有索引分配相同的视图作为子视图(让 subView = sectionViewController.view),而是为每个索引创建不同的 SectionViewController 视图实例

    【讨论】:

    • 我试过了,现在根本看不到任何子视图。你说的很有道理,所以它一定是别的东西。
    【解决方案2】:

    根据@Annie_Dev 的建议尝试为 even 分配不同的颜色并添加子视图以检查是否添加了子视图。

    【讨论】:

    • 现在和所有子视图都获得了不同的背景颜色,但只有最后一个显示故事板中的子视图。不知道可能出了什么问题。
    【解决方案3】:

    所以经过大量的挖掘和尝试,我终于找到了问题所在。我的子视图中有很多相互冲突的约束。一旦我修复了这些,一切都会正常显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多