如果textfield有特定的文本,则运行代码



我试图启动代码时,一个textField有特定的文本。如果用户插入"John"在textField中,我想启动loadData1()函数,如果用户插入"Sara"在textField中,我想启动loadData2()。我在YouTube和Stack Overflow上做了很多研究,但我没有找到任何方法,所以我决定使用if语句,但它也不适合我。

import UIKit
import FirebaseFirestore
import Firebase
import FirebaseAuth
class orderTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {
@IBOutlet var order: UITableView!
var db: Firestore!
var firstName = [String]()
var lastName = [String]()
override func viewDidLoad() {
super.viewDidLoad()
db = Firestore.firestore()
let view1 = firstViewController()
if view1.firstName.text == "John" {
loadData1
}

if view1.firstName.text == "Sara" {
loadData2()
}
}
}
func loadData1() {
db.collection("lastname").getDocuments()
{
(querySnapshot, err) in
if let err = err
{
print("Error getting documents: (err)");
}
else
{
for document in querySnapshot!.documents {
self.lastName.append(document.get("lastname") as? String ?? "")
}
self.order.reloadData()
}
}
}
func loadData2() {
db.collection("lastname").getDocuments()
{
(querySnapshot, err) in
if let err = err
{
print("Error getting documents: (err)");
}
else
{
for document in querySnapshot!.documents {
self.lastName.append(document.get("lastname") as? String ?? "")
}
self.order.reloadData()
}
}
}

你应该在你的类的初始化(例如在你的viewDidLoad)中设置你的textField的委托给当前类(例如ViewController),像这样:

view1.firstName.delegate = self

然后,将这个方法添加到ViewController中它是textField的委托:

func textFieldDidBeginEditing(textField: UITextField) {
// check your text here and do whatever you need
}

检查UITextField中的文本更改,您可以这样做:

override func viewDidLoad() {
//...
yourTextField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
}
@objc func textFieldDidChange(){
print(yourTextField.text)
// check for specific text here
}

使用textFieldDidBeginEditing函数

func textFieldDidBeginEditing(textField: UITextField) {
// check your text here and do whatever you need
if yourTextField.text == "You text" {
// Text did match
} else {
// Text Did not match
}
}

相关内容

最新更新