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

Kenji Crosland picture Kenji Crosland · Aug 22, 2015 · Viewed 43.6k times · Source

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?

Answer

vadian picture vadian · Aug 22, 2015

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}