ios 如何在 Swift 3 中制作下拉菜单
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/44615604/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to make a drop down menu in Swift 3
提问by Jessica thompson
How to implement the Drop Down menu in iOS using swift 3 as shown in the following image:
如何使用 swift 3 在 iOS 中实现下拉菜单,如下图所示:
I have searched SO questions but they prefer making use of UIPicker but instead i wish to achieve this . Is it possible to achieve this type by using the table view?
我已经搜索了 SO 问题,但他们更喜欢使用 UIPicker 但我希望实现这一目标。是否可以通过使用表视图来实现这种类型?
And that to i need to select the dates from the drop down menu:
我需要从下拉菜单中选择日期:
How to show the dates in table view as shown below?
如何在表格视图中显示日期,如下所示?
回答by Charles Xavier
(Swift 3) Add text box and uipickerview to the storyboard then add delegate and data source to uipickerview and add delegate to textbox. Follow video for assistance https://youtu.be/SfjZwgxlwcc
(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)
}
}
}
回答by Optimus
There are bunch of Demo and sample for dropDown , You can achieve this by using tableView just tableview when user click of the button. or you can use this https://cocoapods.org/pods/DropDown
dropDown 有很多 Demo 和示例,当用户单击按钮时,您可以通过使用 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()