- 思路:
- 在SwiftUI中,可以通过
NavigationLink
的destination
闭包传递数据。为了安全和高效,我们定义一个包含特定数据的结构体,并将其作为参数传递给目标视图。
- 视图A持有数据,并通过
NavigationLink
将数据传递给视图B。视图B接收并显示该数据。
- Swift代码实现:
import SwiftUI
// 定义包含特定数据的结构体
struct SpecificData {
let value: String
}
// 视图A
struct ViewA: View {
@State private var dataToPass = SpecificData(value: "初始数据")
var body: some View {
NavigationView {
VStack {
Text("这是视图A")
NavigationLink(destination: ViewB(data: dataToPass)) {
Text("导航到视图B")
}
}
.navigationTitle("视图A")
}
}
}
// 视图B
struct ViewB: View {
let data: SpecificData
var body: some View {
VStack {
Text("这是视图B")
Text("从视图A传递过来的数据: \(data.value)")
}
.navigationTitle("视图B")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ViewA()
}
}