Quelle est la bibliothèque pour faire le menu déroulant dans swift? Je suis nouveau dans Xcode et dans la langue Swift). Quelqu'un peut-il donc me dire comment implémenter la liste déroulante dans swift?
Un "menu déroulant" est un terme/contrôle Web. Dans iOS, nous ne les avons pas. Vous devriez peut-être mieux regarder UIPopoverController
. Consultez ce tutoriel pour avoir un aperçu de PopoverControllers
(Swift 3) Ajoutez une zone de texte et uipickerview au storyboard, puis ajoutez un délégué et une source de données à uipickerview, puis ajoutez un délégué à une zone de texte. Suivez la vidéo pour obtenir de l'aide https://youtu.be/SfjZwgxlwcc
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
@IBOutlet weak var textBox: UITextField!
@IBOutlet weak var dropDown: UIPickerView!
var list = ["1", "2", "3"]
public func numberOfComponents(in pickerView: UIPickerView) -> Int{
return 1
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return list.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
self.view.endEditing(true)
return list[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
self.textBox.text = self.list[row]
self.dropDown.isHidden = true
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == self.textBox {
self.dropDown.isHidden = false
//if you don't want the users to se the keyboard type:
textField.endEditing(true)
}
}
}
Malheureusement, si vous souhaitez appliquer UIPopoverController
dans iOS9, vous obtiendrez un avertissement de classe obsolète. Au lieu de cela, vous devez définir la propriété UIModalPresentationPopover
de votre vue souhaitée pour obtenir le même résultat.
Popover
Dans un environnement normal horizontalement, style de présentation dans lequel le contenu est affiché dans une vue contextuelle. Le contenu de l’arrière-plan est estompé et s’affiche en dehors de la fenêtre popover, ce qui provoque sa fermeture. Si vous ne souhaitez pas que les occurrences soient supprimées par les taps, vous pouvez affecter une ou plusieurs vues à la propriété passthroughViews de l'objet UIPopoverPresentationController associé, que vous pouvez obtenir à partir de la propriété popoverPresentationController.
Dans un environnement compact horizontalement, cette option se comporte de la même manière que UIModalPresentationFullScreen.
Disponible dans iOS 8.0 et versions ultérieures.
Référence: https://developer.Apple.com/documentation/uikit/uiviewcontroller/1621355-modalpresentationstyle
Vous devez être sûr d’utiliser les protocoles UIPickerViewDataSource et UIPickerViewDelegate, sinon une erreur AppDelegate sera générée à partir de Swift 3
Veuillez également prendre note du changement de syntaxe:
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
est maintenant:
public func numberOfComponents(in pickerView: UIPickerView) -> Int
Ce qui suit a fonctionné pour moi.
import UIkit
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var textBox: UITextField!
@IBOutlet weak var dropDown: UIPickerView!
var list = ["1", "2", "3"]
public func numberOfComponents(in pickerView: UIPickerView) -> Int{
return 1
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return list.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
self.view.endEditing(true)
return list[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
self.textBox.text = self.list[row]
self.dropDown.isHidden = true
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == self.textBox {
self.dropDown.isHidden = false
//if you don't want the users to se the keyboard type:
textField.endEditing(true)
}
}
}
Utiliser UIPickerview est le bon moyen de le mettre en œuvre conformément aux directives d'interface utilisateur d'Apple.
Si vous sélectionnez une liste déroulante dans un safari mobile, le message UIPickerview permet à l'utilisateur de choisir des éléments déroulants.
Alternativement
vous pouvez utiliser UIPopoverController jusqu'à iOS 9 en tant que son obsolète, mais il vaut mieux rester avec UIModalPresentationPopover de la vue à afficher également
vous pouvez utiliser UIActionsheet pour afficher les éléments, mais il est préférable d'utiliser UIAlertViewController et choisissez UIActionSheetstyle à afficher car l'ancien est obsolète dernières versions