Создание выпадающего списка с помощью быстрого доступа?

Что представляет собой библиотека для быстрого выпадающего меню? Я новичок в Xcode и языке Swift, поэтому кто-нибудь может направить меня на то, как реализовать выпадающий список в swift?

Ответы

Ответ 2

(Swift 3) Добавьте текстовое поле и uipickerview в раскадровку, затем добавьте делегат и источник данных в uipickerview и добавьте делегат в текстовое поле. Следуйте видео за помощью 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"]

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


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 dont want the users to se the keyboard type:

        textField.endEditing(true)
    }

}
}

Ответ 3

К сожалению, если вы хотите применить UIPopoverController в iOS9, вы получите предупреждение устаревшего класса. Вместо этого вам нужно установить желаемый вид UIModalPresentationPopover для достижения того же результата.

поповер

В горизонтально-обычной среде стиль презентации где содержимое отображается во всплывающем представлении. Фон содержимое затуманивается, и краны за пределами popover заставляют popover быть уволен. Если вы не хотите, чтобы краны отклонили popover, вы можете присвойте одному или нескольким представлениям свойство passthroughViews связанный объект UIPopoverPresentationController, который вы можете получить из свойства popoverPresentationController.

В горизонтально компактной среде эта опция ведет себя так же, как UIModalPresentationFullScreen.

Доступно в iOS 8.0 и более поздних версиях.

Ссылка: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/c/tdef/UIModalPresentationStyle

Ответ 4

Использование UIPickerview - это правильный способ реализовать его в соответствии с Руководством по человеческому интерфейсу Apple

Если вы выберите раскрывающийся список в мобильном сафари, он покажет UIPickerview, чтобы использовать выбор выпадающих элементов.

Альтернативно

вы можете использовать UIPopoverController до тех пор, пока iOS 9 не станет устаревшим, но лучше придерживаться UIModalPresentationPopover, который вы хотите также показать.

вы можете использовать UIActionsheet, чтобы показать элементы, но лучше использовать UIAlertViewController и выбрать UIActionSheetstyle, чтобы показать, поскольку первая устарела в последних версии

Ответ 5

Вы должны быть уверены, что используете протоколы UIPickerViewDataSource и UIPickerViewDelegate, или он будет генерировать ошибку AppDelegate с момента быстрого 3

Также обратите внимание на изменение синтаксиса:

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int

теперь:

public func numberOfComponents(in pickerView: UIPickerView) -> Int

Следующее ниже работало для меня.

import UIkit

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

    @IBOutlet weak var textBox: UITextField!
    @IBOutlet weak var dropDown: UIPickerView!


    var list = ["1", "2", "3"]

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


    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 dont want the users to se the keyboard type:

            textField.endEditing(true)
        }

    }
}