Ios 设置UITextField';s inputView属性到未在Swift中工作的UIPicker
您好,当用户单击textfield时,我试图以编程方式弹出一个Ios 设置UITextField';s inputView属性到未在Swift中工作的UIPicker,ios,swift,uipickerview,uipickerviewdatasource,Ios,Swift,Uipickerview,Uipickerviewdatasource,您好,当用户单击textfield时,我试图以编程方式弹出一个UIPickerView视图。我已经试过了,但它没有任何作用,它不起作用。单击文本字段时没有发生任何事情 class UserProfileTableViewController: UITableViewController,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource { var itemPicker: UIPickerView! = UIPicke
UIPickerView
视图。我已经试过了,但它没有任何作用,它不起作用。单击文本字段时没有发生任何事情
class UserProfileTableViewController: UITableViewController,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource {
var itemPicker: UIPickerView! = UIPickerView()
@IBOutlet weak var genderTxtField: UITextField!
var gender = ["MALE","FEMALE"]
override func viewDidLoad() {
super.viewDidLoad()
genderTxtField.delegate = self
itemPicker!.delegate = self
itemPicker!.dataSource = self
itemPicker!.backgroundColor = UIColor.blackColor()
self.genderTxtField.inputView = itemPicker
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
return 1
}
// returns the # of rows in each component..
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return gender.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return gender[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
genderTxtField.text = gender[row]
//.hidden = true;
}
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
itemPicker.hidden = false
return false
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
当前代码中的问题在于此方法:
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
itemPicker.hidden = false
return false // <--- this is not letting the textField become editable
}
func textField应该开始编辑(textField:UITextField)->Bool{
itemPicker.hidden=false
return false/当前代码中的问题在于此方法:
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
itemPicker.hidden = false
return false // <--- this is not letting the textField become editable
}
func textField应该开始编辑(textField:UITextField)->Bool{
itemPicker.hidden=false
return false//好的,所以我找到了类似于我写的东西,它使用了一个日期选择器,但一般代码是相同的
var datePicker: UIDatePicker!
@IBOutlet var dateFrom: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.setUpDatePicker()
}
func setUpDatePicker() {
datePicker.datePickerMode = UIDatePickerMode.Date
let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 0, height: 44))
let doneBtn = UIBarButtonItem(title: "Select", style: UIBarButtonItemStyle.Done, target: self, action: "selectDate")
let space = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
toolBar.setItems([space, doneBtn], animated: false)
YOURTEXTFIELD.inputAccessoryView = toolBar
YOURTEXTFIELD.inputView = datePicker
}
然后添加一个函数来处理“完成”按钮的按下
func selectDate() {
let formatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy";
YOURTEXTFIELD.text = formatter.stringFromDate(datePicker.date)
YOURTEXTFIELD.resignFirstResponder()
}
只需将您的文本字段替换为您的版本GenderTextField,并将日期选择器更改为您的选择器
别忘了检查所有东西是否都链接好了,所以我找到了一些类似的东西,它使用了一个日期选择器,但一般代码是一样的
var datePicker: UIDatePicker!
@IBOutlet var dateFrom: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.setUpDatePicker()
}
func setUpDatePicker() {
datePicker.datePickerMode = UIDatePickerMode.Date
let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 0, height: 44))
let doneBtn = UIBarButtonItem(title: "Select", style: UIBarButtonItemStyle.Done, target: self, action: "selectDate")
let space = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
toolBar.setItems([space, doneBtn], animated: false)
YOURTEXTFIELD.inputAccessoryView = toolBar
YOURTEXTFIELD.inputView = datePicker
}
itemPicker!.backgroundColor = UIColor.blackColor()
然后添加一个函数来处理“完成”按钮的按下
func selectDate() {
let formatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy";
YOURTEXTFIELD.text = formatter.stringFromDate(datePicker.date)
YOURTEXTFIELD.resignFirstResponder()
}
只需将您的文本字段替换为您的版本GenderTextField,并将日期选择器更改为您的选择器
别忘了检查是否所有的东西都连接起来了
itemPicker!.backgroundColor = UIColor.blackColor()
改为
itemPicker!.backgroundColor = UIColor.whiteColor()
然后移除
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
itemPicker.hidden = false
return false
}
祝你好运
func textFieldShouldBeginEditing(textField: UITextField) -> Bool
{
itemPicker.hidden = false
return true
}
改为
itemPicker!.backgroundColor = UIColor.whiteColor()
然后移除
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
itemPicker.hidden = false
return false
}
祝你好运
func textFieldShouldBeginEditing(textField: UITextField) -> Bool
{
itemPicker.hidden = false
return true
}
您只需在func textfield shouldbeginediting
中将false更改为true即可
您只需在func textfield中将false更改为true即可开始编辑
,以确保textfield是否正确链接?此外,您还应添加一个工具栏以包含一个选择按钮。让用户体验更好如何添加工具栏?我需要写一个答案来向您展示,好的,谢谢@Devster101@Devster101围ting供您回答只是为了确定,文本字段链接是否正确?您还应该添加一个包含选择按钮的工具栏。让用户体验更好如何添加工具栏?我需要写一个答案来向您展示好的,谢谢@Devster101@Devster101等待你的回答我不相信这个答案,我甚至不认为这个答案是正确的method应该在代码中。选择器应该显示为输入视图。不需要操作itI agree的隐藏属性。这个方法是没有意义的。但是,我更多地指出了错误所在。@davidwillames…是的,它现在可以工作了…谢谢你..我删除了这个method@hellosheikh太好了。不用担心。请把这个答案标为t他的解决方案我不相信这个答案,我甚至认为这个方法根本不应该出现在代码中。选择器应该显示为输入视图。不需要操纵itI的隐藏属性。我同意。这个方法是毫无意义的。但是,我更多地指出了错误所在。@davidwillames…是的,它现在可以工作了…谢谢。我删除了这个method@hellosheikh太好了。不用担心。请将此答案标记为解决方案不用担心,快乐编码不用担心,快乐编码