How to loop through all UIButtons in my Swift view?

前端 未结 9 1264
抹茶落季
抹茶落季 2021-02-05 05:22

How would I loop through all UIButtons in my view in Swift? I would want to set all the titles to \"\", but my for-loop in Swift is giving an error.

相关标签:
9条回答
  • 2021-02-05 06:18

    This code seems to be quite useful for iterating over any object within a view, just change UIButton for any other subview type such as UIView or UIImageView, etc.

    let filteredSubviews = self.view.subviews.filter({
        $0.isKindOfClass(UIButton)})
    
    for view in filteredSubviews {
        //Do something        
    }
    
    0 讨论(0)
  • 2021-02-05 06:20

    Looping over subview works, but it's sometimes a little ugly, and has other issues.

    If you need to loop over some specific buttons, for example to add corner radius or change tint or background color, you can use an array of IBOutlets and then loop over that.

    var buttons = [SkipBtn, AllowBtn]
    for button in buttons as! [UIButton] {
        button.layer.cornerRadius = 5
    }
    
    0 讨论(0)
  • 2021-02-05 06:22

    Shortened and updated for Swift 3 & 4

    for case let button as UIButton in self.view.subviews {
        button.setTitleForAllStates("")
    }
    
    0 讨论(0)
提交回复
热议问题