【问题标题】:How to pass a fieldtext value from view another view swiftui如何从另一个视图swiftui中传递字段文本值
【发布时间】:2019-11-29 07:21:54
【问题描述】:

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

【问题讨论】:

    标签: swift swiftui-list swiftui-form swiftui


    【解决方案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")
           }
        }
      }
    }
    

    //第二个内容视图

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

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

    【讨论】:

      【解决方案2】:

      这个 sn-p 可以帮助你: 您可以像这样将属性绑定到文本字段

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-08-04
          • 2022-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多