Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios “中的多个列”;UIPickerView“;_Ios_Swift_Uipickerview - Fatal编程技术网

Ios “中的多个列”;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)

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

当前输出是什么?它只显示一个字段(月),但我预期的输出在PickerViewer中添加了两个字段(天和月)。您可以添加当前状态的图像吗?很高兴您有一个答案-但要了解您的问题和您的问题,然后了解答案,很高兴看到图像当前输出为:“@RamprasathS如果解决了您的问题,请将其标记为正确,或者如果出现其他问题,请通知我。谢谢
 return yourArrayName[component][row];