在swift中制作下拉菜单的库是什么?我是Xcode和Swift语言的新手,所以有人可以指导我如何在swift中实现下拉列表吗?
答案 0 :(得分:27)
(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"]
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)
}
}
}
答案 1 :(得分:9)
A'下拉菜单'是一个网络控制/术语。在iOS中,我们没有这些。您可能会更好地关注UIPopoverController
。查看本教程,了解对PopoverControllers的了解
答案 2 :(得分:8)
不幸的是,如果您希望在iOS9中应用UIPopoverController
,那么您将获得一个弃用的类警告。相反,您需要设置所需的视图UIModalPresentationPopover
属性以获得相同的结果。
<强>酥料饼强>
在水平常规环境中,呈现样式 内容以弹出视图显示的位置。的背景 内容变暗,弹出窗口外的水龙头导致弹出窗口 驳回。如果你不想要点击来消除弹出窗口,你可以 将一个或多个视图分配给的passthroughViews属性 关联的UIPopoverPresentationController对象,您可以获取 来自popoverPresentationController属性。
在水平紧凑的环境中,此选项的行为与 UIModalPresentationFullScreen。
适用于iOS 8.0及更高版本。
参考:https://developer.apple.com/documentation/uikit/uiviewcontroller/1621355-modalpresentationstyle
答案 3 :(得分:2)
你必须确保使用UIPickerViewDataSource和UIPickerViewDelegate协议,否则它会在swift 3中引发AppDelegate错误
另请注意语法上的更改:
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"]
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)
}
}
}
答案 4 :(得分:1)
使用 UIPickerview 是根据Apple的人机界面指南实施它的正确方法
如果您在移动版Safari中选择下拉菜单,则会显示 UIPickerview ,以便让用户选择下拉项目。
或者
您可以使用 UIPopoverController ,直到iOS 9已弃用,但最好坚持使用 UIModalPresentationPopover 视图你也想要表演
您可以使用 UIActionsheet 来展示这些项目,但最好使用 UIAlertViewController ,选择 UIActionSheetstyle ,以显示前者在最新版本中已弃用