Ответ 1
"Выпадающее меню" - это веб-элемент управления/термин. В iOS у нас их нет. Возможно, вам лучше смотреть на UIPopoverController
. Ознакомьтесь с этим учебным пособием, чтобы получить представление о PopoverControllers
Что представляет собой библиотека для быстрого выпадающего меню? Я новичок в Xcode и языке Swift, поэтому кто-нибудь может направить меня на то, как реализовать выпадающий список в swift?
"Выпадающее меню" - это веб-элемент управления/термин. В iOS у нас их нет. Возможно, вам лучше смотреть на UIPopoverController
. Ознакомьтесь с этим учебным пособием, чтобы получить представление о PopoverControllers
(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)
}
}
}
К сожалению, если вы хотите применить UIPopoverController
в iOS9, вы получите предупреждение устаревшего класса. Вместо этого вам нужно установить желаемый вид UIModalPresentationPopover
для достижения того же результата.
поповер
В горизонтально-обычной среде стиль презентации где содержимое отображается во всплывающем представлении. Фон содержимое затуманивается, и краны за пределами popover заставляют popover быть уволен. Если вы не хотите, чтобы краны отклонили popover, вы можете присвойте одному или нескольким представлениям свойство passthroughViews связанный объект UIPopoverPresentationController, который вы можете получить из свойства popoverPresentationController.
В горизонтально компактной среде эта опция ведет себя так же, как UIModalPresentationFullScreen.
Доступно в iOS 8.0 и более поздних версиях.
Использование UIPickerview - это правильный способ реализовать его в соответствии с Руководством по человеческому интерфейсу Apple
Если вы выберите раскрывающийся список в мобильном сафари, он покажет UIPickerview, чтобы использовать выбор выпадающих элементов.
Альтернативно
вы можете использовать UIPopoverController до тех пор, пока iOS 9 не станет устаревшим, но лучше придерживаться UIModalPresentationPopover, который вы хотите также показать.
вы можете использовать UIActionsheet, чтобы показать элементы, но лучше использовать UIAlertViewController и выбрать UIActionSheetstyle, чтобы показать, поскольку первая устарела в последних версии
Вы должны быть уверены, что используете протоколы 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)
}
}
}