首页 > 解决方案 > 如何在 Firebase 的数据库中反映 UISegmentedControl 的选择结果

问题描述

您好,我是编程(Swift/Firebase)和开发应用程序的新手。现在正在尝试使用户配置文件连接到数据库。我可以为 TextFields 数据做同样的事情,但不能对男性/女性开关的 UISegmentedControl 做同样的事情。

@IBAction func saveProfileButton(_ sender: Any) {
        if nameTextField.text! == "" {
            print("enter something")
        } else {
            addUser()
        }
}

@objc func valuChange() {
    switch genderSegControl.selectedSegmentIndex {
        case 0:
            let zero = String("Male")
        case 1:
           let one = String("Female")
        default:
            return
    }
}

func addUser() {
    let  genderChanged = genderSegControl?.addTarget(self, action: #selector(MainViewController.valuChange), for: UIControlEvents.valueChanged)
    let userGender = String(describing: genderChanged!)
    let uidUser = Auth.auth().currentUser?.uid
    let user = ["...": ..., "userGender":  userGender as! String] 
    refUsers.child(uidUser!).setValue(user)
}

但是当我检查 Firebase 的数据库节点时,它只显示"userGender: Optional(())"。我尝试了许多不同的方式,但无法让它显示为"userGender: Male""userGender: Female"

将不胜感激任何建议。

标签: swiftdatabasefirebaseuisegmentedcontrol

解决方案


  1. UISegementControl你的ViewController,比如说genderControl
  2. addUser()函数中,使用 的selectedIndexUISegementControl确定值如下,say index 0is for MALE& 1is for FEMALEthen:

    let gender = genderControl.selectedIndex == 0 ? "Male" : "Female"

  3. 现在在用户字典中设置这个值gender,即

    let user = ["...": ..., "userGender": gender]


推荐阅读