假设我有一个像这样的内容视图:
struct ContentView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection) {
CustomClass()
.tabItem {
VStack {
Image("First")
Text("First")
}
}
.tag(0)
Button(action: { EmployeeStorage.sharedInstance.reload() }) {
Text("Reload")
}
.tabItem {
VStack {
Image("Second")
Text("Second")
}
}
.tag(1)
}
}
}
// MARK: - SomeDelegateThatUpdatesMeLater
extension ContentView: SomeDelegateThatUpdatesMeLater {
func callback() {
// Here I want to update my content view's subviews
// The ContentClass instance needs to be updated
}
}
假设我想监听回调方法,然后稍后更新内容视图的选项卡编号 1 (CustomClass)。如何访问内容视图的子视图?我需要类似 UIKit 的东西子视图WithTag(_:)。 SwiftUI 中有类似的东西吗?
您可能应该重新考虑您的方法。你究竟想要发生什么?您有一些外部数据模型类型可以获取(或更新)数据,并且您希望视图对此做出反应?如果是这种情况,请创建一个ObservableObject
并将其传递给你的CustomClass
.
struct CustomClass: View {
@ObservedObject var model: Model
var body: some View {
// base your view on your observed-object
}
}
也许您希望收到源自以下事件的通知CustomClass
?
struct CustomClass: View {
var onButtonPress: () -> Void = { }
var body: some View {
Button("Press me") { self.onButtonPress() }
}
}
struct ParentView: View {
var body: some View {
CustomClass(onButtonPress: { /* react to the press here */ })
}
}
最后,如果你真的想要某种tag
根据您的观点,您可以利用Preferences
SwiftUI 中的系统。这是一个更复杂的主题,所以我将在这里指出我发现的一个很好的资源:https://swiftui-lab.com/communicating-with-the-view-tree-part-1/ https://swiftui-lab.com/communicating-with-the-view-tree-part-1/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)