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 设置UITextField';s inputView属性到未在Swift中工作的UIPicker_Ios_Swift_Uipickerview_Uipickerviewdatasource - Fatal编程技术网

Ios 设置UITextField';s inputView属性到未在Swift中工作的UIPicker

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

您好,当用户单击textfield时,我试图以编程方式弹出一个
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太好了。不用担心。请将此答案标记为解决方案不用担心,快乐编码不用担心,快乐编码