gpt4 book ai didi

ios - "UIPickerView"中的多列

转载 作者:搜寻专家 更新时间:2023-10-31 08:30:21 24 4
gpt4 key购买 nike

在我的项目中添加了天和月如何在(日期和时间)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)
}

输出是:

[图片丢失]

我期待这样的输出:

enter image description here

最佳答案

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() 中为文本字段分配输入 View

let datePicker = UIPickerView()

self.dateTextfield.inputView = self.datePicker

为toolBar中的textfield分配inputAccessoryView

let toolBar = UIToolbar()
self.dateTextfield.inputAccessoryView = toolBar

一切正常

当前的输出是:

enter image description here

关于ios - "UIPickerView"中的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44701199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com