如何从视图传递字段文本值 另一个视图 swiftui.



我将字段文本放在名为fieldtextmydesine的视图中,并将按钮放在名为login的视图中,我在内容视图中调用了fieldtextmydesin视图和登录视图如何在按下登录按钮时打印字段文本值

所以你想使用NavigationView和NavigationLink而不是一个按钮。

struct ContentView: View {
@State var name: String = "Tim"
var body: some View {
NavigationView {
VStack {
TextField("Enter your name", text: $name)
Text("Hello, (name)!")
NavigationLink(destination: SecondView(name: self.$name)){
Text("LogIn")
}
}
}
}

//第二康滕视图

struct SecondView: View {
@Binding var name: String
var  body: some View {
Text("Hello (text)")
}
}

根据我从您的问题中了解到的情况,您正在尝试将输入到文本字段中的值从一个视图传递到另一个视图。如果这是您的要求,那么这是最好的解决方案。

此代码段可以帮助您: 您可以像这样将属性绑定到文本字段

struct ContentView: View {
@State private var name: String = "Tim"
var body: some View {
VStack {
TextField("Enter your name", text: $name)
Text("Hello, (name)!")
}
}
}

您可以在所需的按钮点击行上添加按钮并打印name。您可以在点击时将 name 属性传递给另一个文本。或隐藏文本视图并在点击时显示和其他方式

您可以在控制台上显示打印名称,也可以在警报中显示名称。在下面的代码片段中,要获取按钮单击时在文本字段中输入的名称,需要状态变量而不是普通变量。它是使用@State关键字创建的。状态参数管理视图中的状态。因此,每当状态发生变化时,与状态关联的所有组件都将再次呈现。

import SwiftUI
struct LoginUI: View {
@State var textName: String = ""
@State var showAlert = false
var body: some View {
VStack(alignment: .center, spacing: 2.0) {
TextField("Enter your name", text: $textName).padding(10)
Button(action: {
print("Entered name is (self.textName)")
self.showAlert = true
}, label: {Text("Login")}).padding().background(Color.gray)
}
.padding(5.0)
.alert(isPresented: $showAlert) {
Alert(title: Text("Entered name is"), message: Text("(self.textName)"))
}
}
}
struct LoginUI_Previews: PreviewProvider {
static var previews: some View {
LoginUI()
}
}

最新更新