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
相关产品推荐
相关产品推荐

