iosarraysswiftclasssubview

Swift: Get all subviews of a specific type and add to an array


I have a custom class of buttons in a UIView that I'd like to add to an array so that they're easily accessible. Is there a way to get all subviews of a specific class and add it to an array in Swift?


Solution

  • The filter function using the is operator can filter items of a specific class.

    let myViews = view.subviews.filter{$0 is MyButtonClass}
    

    MyButtonClass is the custom class to be filtered for.

    To filter and cast the view to the custom type use compactMap

    let myViews = view.subviews.compactMap{$0 as? MyButtonClass}