我通常用于查找父级中的特定视图,
let label: UILabel? = view.subviews.filter {$0 is UILabel}.first
我想创建一个函数,该函数将采用某种类型或某种特定类型的对象,并在与该类型相对应的父级子视图中返回一个视图。类似于:
extension UIView {
func findView(byType type: <Some Type or UIView object?>() -> UIView? {
return self.subviews.filter {$0 is <The type>}.first
}
}
// Usage
if let myLabel = view.findView(byType: <*UILabel.Type* or UILabel()>) { ... }
但是我不知道该怎么做,我尝试查找该主题,但是我担心自己对Swift的了解会限制我。
我该如何实现?
答案 0 :(得分:0)
您可以这样创建扩展名:
extension UIView {
func findView<T>(byType type: T.Type) -> T? {
return self.subviews.filter {$0 is T}.first as? T
}
}
现在您可以像view.findView(byType: UIButton.self)
@LeoDabus指出,更好的扩展名是:
func findView<T>(byType type: T.Type) -> T? {
return subviews.first { $0 is T } as? T
}