从 UIPickerView 中获取字符串值从数组中选择字符串值? (swift/xcode)

get string value from UIPickerView selected string value from array? (swift/xcode)

我的 table 视图中有一个 pickerview,有两个选项 Male 和 Female

这些在数组中。

var MaleFemalePickerViewArray = ["Male","Female"]

如何获取选定的字符串值?

let selectedGender = "male"

那时我想去 将字符串值放入 firebase

喜欢

self.ref.child("Person's Account User").child(userID!).updateChildValues(["Gender": selectedgender])

UIPickerViewDelegate (documented here) has the method pickerView(_:didSelectRow:inComponent:) (documented here)

当用户在您的 UIPickerView 中选择一个项目并为您提供用户选择的行的索引时,将调用该方法。

您可以使用该索引从数据源中获取正确的元素(在您的情况下为 MaleFemalePickerViewArray)。

所以:

  1. 将您的 UIPickerViewdelegate 属性 设置为您的 class
  2. 实施didSelectRow
  3. 宾果 :)

您可以按照以下方式做一些事情:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    guard row < MaleFemalePickerViewArray.count else {
        return
    }

    let selectedGender = MaleFemalePickerViewArray[row].lowercased()

    //insert into firebase or do what ever you please :)
}

更新

很高兴它起作用了...随意将答案标记为已接受 :)

你问:

...to go to the next view controller i want to guard that the have chosen a gender as at the moment in the VC it appears to be on "male" but it doesnt load to firebase , so i was thinking putting an empty string in the array and saying if selectedgender.text = "" (empty string) alert the user " please select a gender"

为什么不为此使用可选的?

如果你 "move" 你的 selectedGender 作为你的 class 的可选项,就像这样。

var selectedGender: String? = nil

然后在你的 didSelectRow: 中设置它,如下所示:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    guard row < MaleFemalePickerViewArray.count else {
        return
    }

    selectedGender = MaleFemalePickerViewArray[row].lowercased()
    //insert into firebase or do what ever you please :)
}

然后您可以在尝试转到下一页时进行检查,例如:

func toNext() {
    if selectedGender == nil {
        //The user has not selected a gender, so show an alert and stay on this page
    } else {
        //Onwards
    }
}

这样你就不必在你的数组中使用额外的 - 不需要并且与你的模型无关 - 值

希望对你有所帮助。