You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何将TextField的输入值传递至其他视图?

解决SwiftUI视图间文本传递问题

你的问题核心在于:Test视图的输入文本没有传递到OtherView,因为两个视图的username是完全独立的变量,互相没有关联。下面是具体的修改方案:

步骤1:修改OtherView,接收外部传入的文本

把OtherView里的@State private var username改成普通的常量属性,用来接收从Test视图传过来的值:

struct OtherView : View {
    // 用let接收外部传入的用户名,不需要@State
    let username: String
 
    var body: some View {
        VStack {  
            Text("hello, \(username)!")
                 .foregroundColor(.white)
                 .font(.headline)
                 .padding(30)
        }
    }
}

步骤2:在导航跳转时传递文本

在Test视图的NavigationLink里,把当前输入的username作为参数传给OtherView:

struct Test: View {
    @State private var username: String = ""
    var body: some View {
        TextField(
            "Your name",
            text: $username
        )
        
        Text("hello, \(username)")
            .foregroundColor(.black)
        
        // 跳转时传入当前的username
        NavigationLink(destination: OtherView(username: username)){
            Text("GO TO OTHER VIEW")
                .frame(width: 280, height: 70)
        }
    }
}

原代码问题说明

原来的OtherView用@State声明了自己的username变量,这个变量只属于OtherView内部,和Test视图里的username没有任何关联。所以跳转过去后,它的默认值是空字符串,自然显示不出输入的内容。通过上面的修改,我们让OtherView接收外部传入的值,就能正确显示输入的文本了。

内容的提问来源于stack exchange,提问作者Wamakaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:40:30