有一个由Views
组成的数组,每当currentPosition
变量改变时,视图就必须改变.然而,这一点没有改变.
我有一个全局ObservableObject
类,它有一个由View
组成的数组,值为currentPosition
.我的目标是根据currentPosition
变量更改视图.
class AXGlobalValues: ObservableObject {
@Published var tabs: [AXTabItem] = [
.init(webView: AXWebView()),
.init(webView: AXWebView())
]
@Published var currentPosition: Int = 0
}
在SwiftUI视图上,我编写了global.tabs[global.currentPosition].webView
,我预计WebView会根据global.currentPosition
的值进行更改.然而,它并没有改变.
我想要做的是添加一个onChange(of:)
,但由于SwiftUI是一种声明性语言,我无法更新视图.
struct AXTabView: View {
@EnvironmentObject private var global: AXGlobalValues
var body: some View {
Text("\(global.currentPosition)")
global.tabs[global.currentPosition].webView
.onChange(of: global.currentPosition) { newValue in
// Not allowed in SwiftUI :(
global.tabs[global.currentPosition].webView
}
}
}
有没有什么方法可以更新基于currentPosition
变量的视图?
提前谢谢!