如何在 Swift 3 中制作下拉菜单

Jes*_*son 2 ios drop-down-menu swift3 xcode8

如何使用 swift 3 在 iOS 中实现下拉菜单,如下图所示: 在此处输入图片说明

我已经搜索了 SO 问题,但他们更喜欢使用 UIPicker 但我希望实现这一目标。是否可以通过使用表视图来实现这种类型?

我需要从下拉菜单中选择日期:

在此处输入图片说明

如何在表格视图中显示日期,如下所示?

小智 7

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()
Run Code Online (Sandbox Code Playgroud)


Cha*_*ier 5

(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)
    }

}
}
Run Code Online (Sandbox Code Playgroud)