gpt4 book ai didi

ios - 递归查找特定类型iOS的 View

转载 作者:行者123 更新时间:2023-11-28 07:30:46 30 4
gpt4 key购买 nike

我有一个 UIView 我想解析 View 的所有 subview 并返回类型为 CustomClass 的 subview 实例

使用 view.subviews 我只能直接访问 subview ,我想解析所有 subview 并返回符合条件的 subview 。

findView(key : uniqueKey , view : UIView)

for subview in view.subviews {
if subview.uniqueKey == key
return subview // and break
else
continue with recursively searching
}

我知道我需要递归地解决这个问题,但我确信只有这个 View 的一个实例存在,所以一旦我找到我想返回并中断递归的实例。

我怎样才能达到同样的效果。

最佳答案

您可以使用这个通用的 UIView 扩展方法来查找特定类的任何对象。如果该类不存在 subview ,则返回 nil。

extension UIView {
func find<T:UIView>(_ ofType:T.Type) -> T? {
if let test = subviews.first(where: { $0 is T }) as? T {
return test
} else {
for view in subviews {
return view.find(ofType)
}
}
return nil
}
}

用法

let firstBtn = self.view.find(UIButton.self)

关于ios - 递归查找特定类型iOS的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54781110/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com