如何在 Swift 3 中制作下拉菜单
Posted
技术标签:
【中文标题】如何在 Swift 3 中制作下拉菜单【英文标题】:How to make a drop down menu in Swift 3 【发布时间】:2017-06-18 13:41:56 【问题描述】:如何使用swift 3在ios中实现下拉菜单如下图所示:
我搜索了 SO 问题,但他们更喜欢使用 UIPicker,但我希望实现这一目标。使用表格视图是否可以实现这种类型?
我需要从下拉菜单中选择日期:
如何在表格视图中显示日期,如下所示?
【问题讨论】:
您可以使用表格创建下拉列表。你可以找到很多 Dropdown 的演示。但我也建议使用 Picker 来选择日期而不是表格。 【参考方案1】:dropDown 有一堆 Demo 和 sample,当用户单击按钮时,您可以通过使用 tableView 来实现这一点。 或者你可以使用这个 https://cocoapods.org/pods/DropDown
let dropDown = DropDown()
// The view to which the drop down will appear on
dropDown.anchorView = view // UIView or UIBarButtonItem
// The list of items to display. Can be changed dynamically
dropDown.dataSource = ["Car", "Motorcycle", "Truck"]
Optional properties:
// Action triggered on selection
dropDown.selectionAction = [unowned self] (index: Int, item: String) in
print("Selected item: \(item) at index: \(index)")
// Will set a custom width instead of the anchor view width
dropDownLeft.width = 200
Display actions:
dropDown.show()
dropDown.hide()
【讨论】:
您可以下载适用于最新 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】:您可以使用 Apple 的默认下拉菜单。
看这里Details
【讨论】:
适用于 iOS 14 +以上是关于如何在 Swift 3 中制作下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章