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()
}