Comment faire un UIPickerView avec un bouton Terminé?
Je vais avoir des difficultés pour faire un UIPickerView avec un bouton fait apparaître lorsque l'utilisateur tape un UITextField. C'est mon code jusqu'à présent. Tout s'appuie bien, mais quand je tape sur le champ de texte, le clavier s'affiche, pas le sélecteur.
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet var textField1: UITextField!
let pickerData = ["11", "12", "13"]
@IBAction func textButton(sender: AnyObject) {
let picker: UIPickerView
picker = UIPickerView(frame: CGRectMake(0, 200, view.frame.width, 300))
picker.backgroundColor = .whiteColor()
picker.showsSelectionIndicator = true
picker.delegate = self
picker.dataSource = self
let toolBar = UIToolbar()
toolBar.barStyle = UIBarStyle.Default
toolBar.translucent = true
toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "donePicker")
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "donePicker")
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.userInteractionEnabled = true
textField1.inputView = picker
textField1.inputAccessoryView = toolBar
}
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
textField1.text = pickerData[row]
}
func donePicker() {
textField1.resignFirstResponder()
}
}
- où êtes-vous appeler textButton méthode?
Vous devez vous connecter pour publier un commentaire.
Ajouter ce code à votre
viewDidLoad()
au lieu de la méthodeUIPickerView avec un bouton Terminé? Swift4
Étape 1 : Ajout d'un textFiled nommé txt_pickUpData dans ViewController et donner IBOutlet de connexion et de déléguer. également prendre un UIDatePicker variable. et prendre un Tableau avec une valeur de chaîne qui est l'affichage sur le sélecteur de roue.
Étape 2 : ajouter Également le délégué de UIPickerView et UITextFiled.
Étape 3 : La fonction de collecte de créer UIPickerView avec la Barre d'outils.
Étape 4 : Ajout de la délégué et source de données les méthodes de UIPickerView pour afficher des données sur UIPickerView roue.
Étape 5 : Ajout de deux boutons de la méthode qui est dans la Barre d'outils. On est doneClick et d'autres est cancelClick. Qui est d'avis de rejeter le UIPickerView.
Étape 6 : l'Appel de la fonction de collecte dans UITextField méthode du délégué.
Il suffit de copier et coller dans Votre code.
@objc
en face de votredoneClick
etcancelClick
fonctions.Je pense que c'est mieux de faire une classe personnalisée pour supprimer le code du contrôleur.
Swift 4/5 exemple:
Exemple d'utilisation:
Les gens semblent être en utilisant le code ici pour d'autres questions à poser à la même chose que VBaarathi demandé
Dans Swift3
Ensuite, vous pouvez mettre ce qui suit dans le même swift fichier
Swift 3x:
Le génial réponse est déjà donnée, mais ici, c'est l'approche différente, il suffit de faire une
pickerView
et donner lainputView
etinputAccessoryView
comme ceci: