web-dev-qa-db-fra.com

Faire une liste déroulante en utilisant rapide?

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?

25
mazinAlmas

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

http://www.raywenderlich.com/29472/ipad-for-iphone-developers-101-in-ios-6-uipopovercontroller-tutorial

9
Chackle

(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)
        }
    }
}
27
Charles Xavier

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

8
Ilan Kutsman

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)
        }
    }
}
2
Dana Young

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

1
Durai Amuthan.H