您的主要问题是,在调用时getSubviewsOfView(subview as! UIView)
(在函数内递归地),您对结果不做任何事情。
您也可以删除count == 0
检查,因为在这种情况下,for…in
循环将被跳过。你也有很多不必要的演员
假设您希望获得一组平面CheckCircle
实例,那么我认为对代码的这种修改应该有效:
func getSubviewsOfView(v:UIView) -> [CheckCircle] {
var circleArray = [CheckCircle]()
for subview in v.subviews as! [UIView] {
circleArray += getSubviewsOfView(subview)
if subview is CheckCircle {
circleArray.append(subview as! CheckCircle)
}
}
return circleArray
}