IOS Swift - 如何找到具有共同属性的多个视图

Shl*_*rtz 2 user-interface classname uiview ios swift

寻找一种使用通用 String 属性获取多个视图的方法,现在我编写了以下方法来通过它们的标签获取 UIViews 的集合:

extension UIView {
func getViewsByTag(tag:Int) -> Array<UIView?>{
    var views = Array<UIView?>()

    for view in self.subviews{
        if view.subviews.count > 0{
            views.extend((view as UIView).getViewsByTag(tag))
        }

        if view.tag == tag {
            println(view.tag)
            views.append(view as? UIView)
        }
    }
    return views
}
}
Run Code Online (Sandbox Code Playgroud)

但是,如果输入是具有含义的字符串会更好,例如“必需”以表示表单中的所有必填字段。

:是否有可以用于这种方式的 String 属性,或者是否有更好的方法来快速获取视图集合?

qwe*_*_so 6

您也可以使用该identifier属性。

extension UIView {
  func getViewsByTag(tag:Int) -> Array<UIView?>{
    return subviews.filter { ($0 as UIView).tag == tag } as [UIView]
  }
  func getViewsByIdentifier(id:String) -> Array<UIView?>{
    return subviews.filter { ($0 as UIView).identifier == id } as [UIView]
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 还有一件事,这个方法只迭代视图层次结构的第一级。 (2认同)