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

时间:2019-11-29 07:21:54

标签: swift swiftui swiftui-list swiftui-form swiftui-bug

我在名为fieldtextmydesine的视图中放置了字段文本,还在名为login的视图中放置了按钮,在contentview中将fieldtextmydesin视图和登录视图称为了视图,当我按下登录按钮时如何打印字段文本值

3 个答案:

答案 0 :(得分:1)

因此,您想使用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")
       }
    }
  }
}

//第二个ContenView

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

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

答案 1 :(得分:0)

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

struct ContentView: View {
    @State private var name: String = "Tim"

    var body: some View {
        VStack {
            TextField("Enter your name", text: $name)
            Text("Hello, \(name)!")
        }
    }
}

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

答案 2 :(得分:0)

您可以在控制台上显示打印名称,也可以在警报中显示名称。在下面的代码段中,要获取在单击按钮时在文本字段中输入的名称,需要状态变量而不是普通变量。它是使用@State关键字创建的。 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()
    }
}