MST

星途 面试题库

面试题:SwiftUI路由中的数据传递

在SwiftUI的导航与路由场景下,假设从视图A导航到视图B,如何安全且高效地将视图A中的特定数据传递到视图B?请详细说明思路,并给出完整的Swift代码实现,包括视图A和视图B的定义。
37.8万 热度难度
编程语言Swift

知识考点

AI 面试

面试题答案

一键面试
  1. 思路
    • 在SwiftUI中,可以通过NavigationLinkdestination闭包传递数据。为了安全和高效,我们定义一个包含特定数据的结构体,并将其作为参数传递给目标视图。
    • 视图A持有数据,并通过NavigationLink将数据传递给视图B。视图B接收并显示该数据。
  2. 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()
    }
}