从ScrollView Swift中删除子视图

我使用for-loop在我的scrollView中创build标签和button。 是否有可能删除我的scrollView的所有对象? (我想用新的内容来更新它)

for peop in personArray{ scrollView.clearContent ?????? // Name label var label: UILabel = UILabel() label.frame = CGRectMake(8, CGFloat(nameHeight), 183, 21) label.backgroundColor = UIColor.whiteColor() label.textColor = UIColor(red: 90/255.0, green: 187/255.0, blue: 206/255.0, alpha: 1.0) label.textAlignment = NSTextAlignment.Left label.font = UIFont (name: "HelveticaNeue-Light", size: 14) label.text = " \(peop.getName()) - \(sex)" self.scrollView.addSubview(label) //Delete button var button = UIButton.buttonWithType(UIButtonType.System) as UIButton button.tag = playerId button.frame = CGRectMake(199, CGFloat(nameHeight), 37, 21) button.backgroundColor = colorWheel.colorsArray[7] button.setTitle("Slet", forState: UIControlState.Normal) button.addTarget(self, action: "delAction:", forControlEvents: UIControlEvents.TouchUpInside) button.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal) self.scrollView.addSubview(button) button.titleLabel!.font = UIFont(name: "HelveticaNeue-Light", size: 14) scrollHeight = scrollHeight + 29 nameHeight = nameHeight + 29 playerId++ } scrollView.contentSize = CGSize(width: 20.0, height: CGFloat(nameHeight)) } func delAction(sender: UIButton!){ personArray.removeAtIndex(sender.tag) updatePeople() } 

你尝试过吗?

 let subViews = self.scrollView.subviews for subview in subViews{ subview.removeFromSuperview() } 

一线解决scheme,使用

 scrollView.subviews.forEach({ $0.removeFromSuperview() }) 

更新

对于只删除特定types的视图,说UIButton使用

 scrollView.subviews.forEach ({ ($0 as? UIButton)?.removeFromSuperview() }) 

你可以用块的方法做到这一点,

 let views: NSArray = scroller.subviews // 3 - remove all subviews views.enumerateObjectsUsingBlock { (object: AnyObject!, idx: Int, stop: UnsafeMutablePointer<ObjCBool>) -> Void in object.removeFromSuperview() } 

从标签中删除不同类别的一组对象。 创build对象集时设置标签。

 label.tag = 99 

现在,当删除对象时,使用:

 func removeLabels() { let subViews = self.view.subviews for subview in subViews { if subview.tag == 99 { subview.removeFromSuperview() } } }