Ios “中的多个列”;UIPickerView“;
在我的项目中添加了天和月 如何在(日期和时间)UIPickerView中添加两个字段。 在我的代码中是Ios “中的多个列”;UIPickerView“;,ios,swift,uipickerview,Ios,Swift,Uipickerview,在我的项目中添加了天和月 如何在(日期和时间)UIPickerView中添加两个字段。 在我的代码中是 class TableViewController: UITableViewController ,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource{ @available(iOS 2.0, *) func numberOfComponents(in pickerView: UIPickerView)
class TableViewController: UITableViewController ,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource{
@available(iOS 2.0, *)
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
@IBOutlet var dateTextfield:UITextField!
@IBOutlet var dateLabel:UILabel!
var pickerDaysYear = [["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"],["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]];
override func viewDidLoad() {
super.viewDidLoad()
self.pickerview.delegate = self
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 2
}
numberOfRowsInComponent component: Int) -> Int {
return self.pickerDaysYear[component].count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if(component == 0)
{
return self.pickerDaysYear[component][row]
}
else
{
return self.pickerDaysYear[component][row]
}
// return pickerDaysYear[component][row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let days = pickerDaysYear[0][pickerView.selectedRow(inComponent: 0)]
let month = pickerDaysYear[1][pickerView.selectedRow(inComponent: 1)]
dateTextfield.text = days + " " + month
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
view.endEditing(false)
}
类TableViewController:UITableViewController、UIExtFieldDelegate、UIPickerViewDeleteGate、UIPickerViewDataSource{
@可用(iOS 2.0,*)
func numberOfComponents(在pickerView:UIPickerView中)->Int{
返回1
}
@IBOutlet var dateTextfield:UITextField!
@IBVAR日期标签:UILabel!
var pickerDaysYear=[“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“11”,“12”,“13”,“14”,“15”,“16”,“17”,“18”,“19”,“20”,“21”,“22”,“23”,“24”,“25”,“26”,“27”,“28”,“29”,“30”,“31”,“1月”,“2月”,“3月”,“4月”,“5月”,“6月”,“7月”,“8月”,“9月”,“10月”,“11月”,“12月];
重写func viewDidLoad(){
super.viewDidLoad()
self.pickerview.delegate=self
}
func numberOfComponentsInPickerView(pickerView:UIPickerView)->Int{
返回2
}
numberOfRowsInComponent组件:Int)->Int{
返回self.pickerDaysYear[component].count
}
func pickerView(pickerView:UIPickerView,titleForRow行:Int,forComponent组件:Int)->String{
如果(组件==0)
{
返回self.pickerDaysYear[组件][行]
}
其他的
{
返回self.pickerDaysYear[组件][行]
}
//返回选择器日期EAR[组件][行]
}
func pickerView(pickerView:UIPickerView,didSelectRow行:Int,不完整组件:Int){
let days=pickerdaysear[0][pickerView.selectedRow(不完整:0)]
let month=pickerDaysYear[1][pickerView.selectedRow(不完整项:1)]
dateTextfield.text=天+月
}
覆盖函数touchesend(touchs:Set,带有事件:UIEvent?){
视图。重新编辑(false)
}
输出为:
[图像丢失]
我期望得到这样的结果:
函数
numberOfComponents
和numberOfRowsInComponent
来自数据源,而不是委托
因此,您需要将此行添加到您的viewDidLoad
:
self.pickerview.delegate=self
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
}
为工具栏中的文本字段指定inputAccessoryView
let toolBar = UIToolbar()
self.dateTextfield.inputAccessoryView = toolBar
很好用
当前输出为:以防有人在协议调用中查找组件的OBJC调用
- 对于行数,请使用
return [yourArrayName[component] count];
- 用于行使用的标题
return yourArrayName[component][row];
return yourArrayName[component][row];