要按下具有更新的@published变量的导航链接,您可以使用SwiftUI的NavigationLink
和onReceive
修饰符。
以下是一个示例代码,演示如何根据@published变量的更改来更新导航链接:
import SwiftUI
struct ContentView: View {
@State private var showDetails = false
@State private var dataUpdated = false
var body: some View {
VStack {
Button("Update Data") {
// 模拟数据更新
self.dataUpdated.toggle()
}
.padding()
NavigationLink(destination: DetailsView(), isActive: $showDetails) {
Text("Show Details")
}
.onReceive(Just(dataUpdated)) { updated in
if updated {
self.showDetails = true
}
}
}
}
}
struct DetailsView: View {
var body: some View {
Text("Details View")
}
}
在这个示例中,我们有一个ContentView
视图,其中包含一个按钮和一个导航链接。当点击按钮时,dataUpdated
变量将切换其布尔值,模拟数据的更新。然后,onReceive
修饰符将监听dataUpdated
变量的更改。一旦dataUpdated
变为true
,showDetails
变量将设置为true
,导航链接将自动变为活动状态,导航到DetailsView
。
这种方法可确保导航链接仅在@published变量更改时更新。