pickerView控件的简单使用

    xiaoxiao2026-05-06  4

    前一段时间实在是腾不出时间来弄这些东西,所以好久没上博客,都荒废了,不过我最近在用swift开发项目,估计以后就转战swift了,小伙伴们顶一下吧!

    项目中遇到好多问题现在就与大家分享一下吧,今天就先说说系统的一个控件PickerView,用的不好,大神们见谅哦!

    pickerView和我们经常用的tableView一样也有几个必需遵循的协议

    UIPickerViewDataSource协议

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { }//指定pickerView的列数

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { }//指定pickerView每列的行数

    UIPickerViewDelegate协议

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { }//当前列当前行的title

    func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {}//返回的行高

    func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat { }//每一列的宽度

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {}//点击方法

    话不多说,上代码

    自定义HomepagePickerView

    import UIKit class HomepagePickerView: UIPickerView ,UIPickerViewDelegate, UIPickerViewDataSource {     // --- init     override init(frame: CGRect) {         super.init(frame: frame)         self.delegate = self         self.dataSource = self         self.backgroundColor = UIColor.whiteColor()     }          required init?(coder aDecoder: NSCoder) {         super.init(coder: aDecoder)     }          var dataArray = NSArray() {         willSet(newValue) {             self.dataArray = newValue         }         didSet {             self.reloadComponent(0)         }     }     var detailArray = NSArray() {         willSet(newValue) {             self.detailArray = newValue         }         didSet {             self.reloadComponent(1)         }     }     // --- 回调函数     var onTwoComponentSelected: ((component1Text: String, component2Text: String) -> Void)?     var onOneComponentSelected : ((component1Text: String) -> Void)?     /// ---- UIPickerViewDelegate     func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {         if self.detailArray.count != 0 {             return 2         }else{             return 1         }     }     func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {                  if self.detailArray.count != 0 {             if component == 0 {                 return dataArray.count             }else{                 return detailArray.count             }         }else{             return dataArray.count         }     }          func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {         if self.detailArray.count != 0 {             if component == 0 {                 return "\(dataArray[row])"             }else{                 return detailArray[row] as? String             }         }else{             return dataArray[row] as? String         }     }     func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {         return 40     }          func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {         if self.detailArray.count != 0  {             let str1 = dataArray[self.selectedRowInComponent(0)] as! String             let str2 = detailArray[self.selectedRowInComponent(1)] as! String             if let block = onTwoComponentSelected {                 block(component1Text: str1,component2Text:str2)             }         }else{             let str1 = dataArray[self.selectedRowInComponent(0)] as! String             if let block = onOneComponentSelected {                 block(component1Text: str1)             }         }              }     func showPickerView() {         UIApplication.sharedApplication().keyWindow?.addSubview(self)     } } ViewController.swift中调用

    override func viewDidLoad() {         super.viewDidLoad()         // Do any additional setup after loading the view, typically from a nib.         setPickerView()     }     func setPickerView() {         let pickerView = HomepagePickerView.init(frame: CGRectMake(0, self.view.frame.size.height - 200, self.view.bounds.size.width, 200))         pickerView.dataArray = ["wet","ery","sdg","sag","dsfh"]         pickerView.detailArray = ["214","346"]         self.view.addSubview(pickerView)         //当detailArray != nil的时候         pickerView.onOneComponentSelected = { (component1Text: String) in             print(component1Text)         }

         //当detailArray == nil的时候        pickerView.onTwoComponentSelected = { (component1Text: String, component2Text: String) in                          print(component1Text)             print(component2Text)         }     }

    代码下载

    转载请注明原文地址: https://ju.6miu.com/read-1309402.html
    最新回复(0)