2016-01-28 7 views
0

hello Я пытаюсь всплывать UIPickerView программно, когда пользователь нажимает на текстовое поле. Я пробовал это, но ничего не делает. он не работает. ничего не происходит, когда я нажимаю текстовое полеUITEXTFIELD InputView Uipicker не работает в swift

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. 
    } 


} 
+0

Чтобы быть уверенным, правильно ли связывается текстовое поле? Также вы должны добавить на панель инструментов кнопку выбора. Улучшает работу пользователя – Devster101

+0

Как добавить панель инструментов? – hellosheikh

+0

Мне нужно написать ответ, чтобы показать вам – Devster101

ответ

0

Вопрос в текущем коде в этом методе:

func textFieldShouldBeginEditing(textField: UITextField) -> Bool { 
    itemPicker.hidden = false 
    return false // <--- this is not letting the textField become editable 
} 

Я хотел бы предложить этот метод удаления полностью.

+1

Я не убежден в этом ответе, я даже не думаю, что этот метод должен быть в коде вообще. Сборщик должен отображаться как вид ввода. Не нужно манипулировать скрытым свойством этого – Devster101

+1

Согласен. Этот метод бессмыслен. Тем не менее, я больше указывал, где ошибка. –

+0

@DavidWilliames ... да Он работает сейчас ... спасибо .. Я удалил этот метод – hellosheikh

1

Хорошо, так что я выкопал что-то подобное, я написал, Он использует datepicker, но общий код тот же.

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

Просто заменить YOURTEXTFIELD с версией genderTxtField и изменить выбор даты для вашего подборщика.

Не забудьте проверить, все ли связана

+0

Не беспокойтесь, счастливое кодирование – Devster101

0
itemPicker!.backgroundColor = UIColor.blackColor() 

изменение

itemPicker!.backgroundColor = UIColor.whiteColor() 

затем удалить

func textFieldShouldBeginEditing(textField: UITextField) -> Bool { 
    itemPicker.hidden = false 
    return false 
} 

удачи!

0
func textFieldShouldBeginEditing(textField: UITextField) -> Bool 
{ 
    itemPicker.hidden = false 
    return true 
} 

Вам просто нужно изменить false на true в func textFieldShouldBeginEditing.

Смежные вопросы