答案 0 :(得分:2)
class TableViewController: UITableViewController ,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource{
@IBOutlet var dateTextfield:UITextField!
@IBOutlet var dateLabel:UILabel!
let datePicker = UIPickerView()
override func viewDidLoad() {
super.viewDidLoad()
self.dateTextfield.delegate = self
self.datePicker.dataSource = self
self.datePicker.delegate = self
self.dateTextfield.inputView = self.datePicker
let toolBar = UIToolbar()
toolBar.barStyle = UIBarStyle.default
toolBar.isTranslucent = true
toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.doneButtonTapped))
toolBar.setItems([doneButton], animated: false)
self.dateTextfield.inputAccessoryView = toolBar
}
func doneButtonTapped(){
self.dateTextfield.resignFirstResponder()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
view.endEditing(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//---------------- PickerView delegate Method --------------------------------//
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 2
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return self.pickerDaysmonth[component].count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return self.pickerDaysmonth[component][row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let days = pickerDaysmonth[0][pickerView.selectedRow(inComponent: 0)]
let month = pickerDaysmonth[1][pickerView.selectedRow(inComponent: 1)]
dateTextfield.text = days + " " + month
}
在UIPickerView()
中为textfield分配输入视图let datePicker = UIPickerView()
self.dateTextfield.inputView = self.datePicker
在toolBar
中为textfield分配inputAccessoryViewlet toolBar = UIToolbar()
self.dateTextfield.inputAccessoryView = toolBar
工作正常
答案 1 :(得分:1)
函数numberOfComponents
和numberOfRowsInComponent
来自数据源,而非委托。
因此,您需要将此行添加到viewDidLoad
:
self.pickerview.delegate = self
答案 2 :(得分:1)
以防万一有人在协议调用内寻找组件的OBJC调用
使用的行数
return [yourArrayName[component] count];
用于行标题
return yourArrayName[component][row];