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

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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()
    

【讨论】:

以上是关于如何从另一个视图swiftui中传递字段文本值的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 从另一个视图中捕获 Picker 值

如何最好地传递数据以在 swiftui 中进行表单编辑(同时让该数据可用于父视图和其他子视图)?

如何在swiftUI的父视图中从另一个视图访问变量?

在 SwiftUI 中的 forEach 期间将文本字段输入添加到数组

SwiftUI |从另一个 SwiftUI 视图访问 PickerView 选择

如何从另一个对象设置 UItextlabel 文本