有什么方法可以获取 UIView 的所有子视图,例如 SwiftUI 应用程序中的 [view subviews] 吗?
当我尝试查询时,它给了我“_TtCOCV7SwiftUI11DisplayList11ViewUpdater8Platform13CGDrawingView ....”。我正在尝试获取所有文本字段、标签等。
在大多数情况下,您应该不希望考虑 \xe2\x80\x9cgetting\xe2\x80\x9d SwiftUI 中的视图。在 SwiftUI 中,您的视图是结构体,您应该将数据模型构造为 \xe2\x80\x9cdrive\xe2\x80\x9d 对视图的更改。
\n例如,如果您正在考虑禁用所有文本字段,则应考虑在数据模型中使用 bool 值,\xe2\x80\x9cdrives\xe2\x80\x9d 您的 SwiftUI 视图将被禁用或启用。如果您正在考虑以某种方式设置所有文本字段的样式,则应考虑将该样式信息存储在数据模型中,并在数据 model\xe2\x80\x99s 值更改时在文本字段上使用不同的视图修饰符。
\n话虽如此,您可以使用 UIKit 方法通过将最顶层的 SwiftUI 视图包装在 UIHostingController 中来获取 SwiftUI 层次结构中的所有视图。这样,您就可以查询在后台渲染的一些 UIKit 视图。您可能并不总能获得所需的视图,因为 SwiftUI 中只有某些视图是使用 UIView 和 NSView 等本机视图呈现的,而其他一些则不是。您可以使用视图调试器更详细地检查视图层次结构,以查看可以查询哪些视图。
\n| 归档时间: |
|
| 查看次数: |
447 次 |
| 最近记录: |