Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我能';t在注册表中添加性别的UIPickerview_Ios_Swift_Uipickerview - Fatal编程技术网

Ios 我能';t在注册表中添加性别的UIPickerview

Ios 我能';t在注册表中添加性别的UIPickerview,ios,swift,uipickerview,Ios,Swift,Uipickerview,我正在创建一个注册表,我必须使用选择器视图在文本字段中包含性别。然而,我得到的是问号,而不是男性和女性 这是我的密码: @IBOutlet weak var genderfield: UITextField! let pickerView = UIPickerView() let gender1 = ["Male", "Female"] func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1

我正在创建一个注册表,我必须使用选择器视图在文本字段中包含性别。然而,我得到的是问号,而不是男性和女性

这是我的密码:

@IBOutlet weak var genderfield: UITextField!

let pickerView = UIPickerView()
let gender1 = ["Male", "Female"]

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return gender1.count
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return gender1[row]
}

func pickerView(_ pickerView:UIPickerView,didSelectRow row: Int,forComponent component: Int){
    genderfield.text = gender1[row]
    genderfield.resignFirstResponder()
}
在ViewDidLoad中:

pickerView.delegate = self
pickerView.dataSource = self
genderfield.inputView = pickerView

我不认为我的代码有什么问题。我已经在谷歌上搜索了好几个小时。

你会得到问号,因为你的
titleForRow
委托方法上的签名错误

更改:

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return gender1[row]
}
致:


请注意,在

之后添加了
您不能添加UIPickerViewDelegate、UIPickerViewDataSource。
所以,当您添加选择器的委托和数据源时,可以很好地查看其工作情况

像这样: 扩展寄存器vc:UIPickerViewDelegate,UIPickerViewDataSource{ func numberOfComponents(在pickerView:UIPickerView中)->Int{ 返回1 }


如果在更新的
titleForRow
方法中放置断点,是否正在调用它?我仍然看到相同的问号,因此不会调用它。使用调试器,您能否验证是否正在调用
numberOfRowsInComponent
。如果返回非零结果,请验证是否正在调用
titleForRow
不是。请在调试器中进行实际验证。还要确认您使用的是Swift 3或更高版本。这两个方法没有被调用。我使用的是Swift 4如果两者都没有被调用,则不会设置picker视图的委托和数据源。我知道您发布的代码表明它们已被设置,但如果是,则会调用这些方法。必须要比你在问题中发表的内容更深入。
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return gender1[row]
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return gender1.count
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return gender1[row]
}

func pickerView(_ pickerView:UIPickerView,didSelectRow row: Int,inComponent component: Int){
    genderfield.text = gender1[row]
    genderfield.resignFirstResponder()
}