微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我在 UItextfields 中写的东西在几秒钟后或每当用户点击输入时都会消失?

如何解决为什么我在 UItextfields 中写的东西在几秒钟后或每当用户点击输入时都会消失?

import SwiftUI
import iPhoneNumberField
import Firebase
//import FirebaseFirestoreSwift
import FirebaseDatabase
import FirebaseStorage

在这里,我按照教程制作了这样的状态变量。但是每次我在文本框中输入内容时,它们都会消失。而且我还尝试将信息推送到 firebase 实时数据库中。这是我无法做到的,因为文本不断消失。我的应用程序发生了什么?

class Formviewmodel: ObservableObject {
  @State var firstName = ""
  @State var lastName = ""
  @State var userName = ""
  @State var address = ""
  @State var city = ""
  @State var zipCode = ""
  @State var phone = ""
  @State var country = ""

}

var ref: DatabaseReference!


struct CreateProfile: View {

@StateObject var viewmodel = Formviewmodel()
@State private var isEditing = false


let ref = Database.database().reference()


var dateFormatter: DateFormatter {
        let formatter = DateFormatter()
        formatter.dateStyle = .long
        return formatter
    }

@State private var birthDate = Date()
@State private var date = Date()

var body: some View {
    NavigationView {
        vstack {
            Form {
                //Separates the text into Boxes
                Section {
                   TextField("Username",text: $viewmodel.userName){ isEditing in
                    self.isEditing = isEditing
                }
                    //TextField("Username",text: $userName)
                }
                
                Section {
                    TextField("First Name",text: $viewmodel.firstName)
                    TextField("Last  Name",text: $viewmodel.lastName)
                    
                }
                
                Section(header: Text("Enter Birthday")) {
                    vstack {
                        Text("Enter your birthday")
                                        .font(.largeTitle)
                        DatePicker("Enter your birthday",selection: $date)
                                        .datePickerStyle(GraphicalDatePickerStyle())
                                        .frame(maxHeight: 400)
                    }
                    
                }
                
                Section(header: Text("Enter your Mailing Address")) {
                    TextField("Street Address",text: $viewmodel.address)
                    TextField("City",text: $viewmodel.city)
                    TextField("Postal Code",text: $viewmodel.zipCode)
                    TextField("Country",text: $viewmodel.country)
                    
                }
                
                Section(header: Text("Phone Number")) {
                    iPhoneNumberField(text: $viewmodel.phone)
                                .flagHidden(false)
                                .flagSelectable(true)
                    
                    
                        }
                }.navigationTitle("Create Account")
                Divider()
                Button(action: {
                    //Push Data to firebase database here
                    
                    ref.childByAutoId().setValue(["User": $viewmodel.userName,"First Name": $viewmodel.firstName,"Last Name": $viewmodel.lastName,"Address": $viewmodel.address,"City": $viewmodel.city,"Zipcode": $viewmodel.zipCode,"Country":
                            $viewmodel.country,"Phone":$viewmodel.phone
                    ])
                    
                },label: {
                    
                    Text("Save Profile")
                        .frame(width: 250,height: 50,alignment: .center)
                        .background(Color.blue)
                        .foregroundColor(.white)
                        .cornerRadius(8)
                        
                })
                .padding()
                
            }
        }
        //This is the create account title
        
    //.textColor(.black)
    }
}

struct CreateProfile_Previews: PreviewProvider {
  static var previews: some View {
    CreateProfile()
        .preferredColorScheme(.light)
 }
}

解决方法

对我来说,Firestore 的导入似乎不正确。我看过很多教程,但没有一个以这种方式导入 Firestore,即使您取消注释也是如此。

我会在 Youtube 上观看 Waga Odongo 的 Instagram 克隆视频。他们涵盖了此类内容,并帮助我制作了可工作的 TextField。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。