mtpPickerField
mtpPickerField 是在多个选项中选择的一个好组件。这个自定义控件由一个 UITextField 和一个 UIPickerView、UIDatePicker、UItableView、UICollectionView 控件的组合组成,这些控件被构建成一个 ActionSheet。
需求
- iOS 9.0+
- Xcode 9+
安装
mtpPickerField 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行:
pod 'mtpPickerField'
使用
- 将一个 UITextView 对象拖到画布上。
- 在标识检查器中,将自定义类名设置为 PickerField。
- 设置其类型。
- 现在您可以根据字段类型使用控件。
class ViewController: UIViewController , UIPickerViewDataSource {
@IBOutlet weak var pickerViewField: PickerField!
let states = ["Alaska",
"Alabama",
"Arkansas",
"American Samoa",
"Arizona",
"California"]
override func viewDidLoad() {
super.viewDidLoad()
pickerViewField.type = .pickerView
pickerViewField.pickerView?.dataSource=self
pickerViewField.placeholder="your state ..."
pickerViewField.titleLabel?.text="select a state"
pickerViewField.pickerFieldDelegate=self
tabelViewField.height=400
tabelViewField.cancelWhenTouchUpOutside=false
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return states.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return states[row]
}
}
- 您还可以使用了解 PickerFieldDelegate 的事件的发生。
extension ViewController:PickerFieldDelegate{
func pickerField(didOKClick pickerField: PickerField) {
if pickerField.type == .pickerView{
if let row=pickerField.pickerView?.selectedRow(inComponent: 0){
pickerField.text=states[row]
}
}
}
}
有关更多示例,请查看示例项目。
示例
要运行示例项目,请先克隆仓库,然后从 Example 目录运行 pod install
。
作者
Mostafa Taghipour, [email protected]
许可证
mtpPickerField 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。