当选择一个新数组放入滚动视图时,如何通过for循环删除放置在scrollview中的UIButtons?

时间:2017-01-12 19:32:49

标签: ios arrays swift3 xcode8

我需要一些帮助。基于某人可以扔飞盘的距离,我通过滑块使用该值将我给它们的推荐数组复制到arrayToUse变量中,该变量创建了UIButtons,其中的图像是我水平放置在底部的VC使用scrollView。用户可以再次移动滑块以选择不同的距离并点击提交,它将根据新距离加载不同的数组。我的问题是,如果他们选择的新阵列的图像少于他们开始使用的图像,我不知道如何解除之前的图像。我可以在位于顶层下面的视图调试层次结构中看到它,它仍然会显示,如果有更多的图像,它们可能会滚动到scrollView的末尾,因为下面有更长的数组。有没有办法可以解除之前的数组并在按下提交按钮时加载一个新数组?

for i in 0..<arrayToUse.count {

    let imageView = UIButton ()
    imageView.setImage(arrayToUse[i].image, for: .normal)
    imageView.contentMode = .scaleAspectFit
    let xPosition = (self.view.frame.width - 60) * CGFloat(i)

    imageView.frame = CGRect(x: xPosition + 30, y: view.frame.height - self.scrollView.frame.width + 30, width: self.scrollView.frame.width - 60 , height: self.scrollView.frame.width - 60)

    scrollView.contentSize.width = (scrollView.frame.width * CGFloat(i + 1)) - (CGFloat(60 * i))
    scrollView.addSubview(imageView)

    imageView.addTarget(self, action: #selector(discSelectionVC.buttonTapped(_:)), for: .touchUpInside)
    imageView.tag = i

}

1 个答案:

答案 0 :(得分:0)

如果我听到这个,我认为这就是你想要的:

for subview in scrollView.subviews {

    if subview is UIButton {
        // Perform logic here to determine if you want to remove the UIButton from the view
        subview.removeFromSuperview()
    }
}

这将遍历scrollView中的子视图,然后如果它看到子视图是UIButton,那么根据您编写的逻辑,您可以选择删除或不删除该UIButton。