2016-04-20 59 views
0

我想實現viewForRow委託,所以我可以爲每一行有兩個標籤。我現在只用一行標籤就可以工作。任何幫助,高度讚賞。兩個標籤爲每行picker查看

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView { 
    var returnLabel = view as UIView! 

    if view == nil { 
     returnLabel = UIView() 
    } 

    var pickerLabel = view as! UILabel! 
    if view == nil { 
     pickerLabel = UILabel() 
    } 

    let titleData = List 

    let myTitle = NSAttributedString(string: titleData[row], attributes: [NSFontAttributeName:UIFont(name: "Helvetica Neue", size: 17.0)!,NSForegroundColorAttributeName:UIColor.whiteColor()]) 
    pickerLabel.attributedText = myTitle 
    pickerLabel.textAlignment = .Center 

    var pickerLabel2 = view as! UILabel! 
    if view == nil { 
     pickerLabel2 = UILabel() 
    } 

    let subtitleData = subtitleList 

    let mySubtitleTitle = NSAttributedString(string: subtitleData[row], attributes: [NSFontAttributeName:UIFont(name: "Helvetica Neue", size: 12.0)!,NSForegroundColorAttributeName:UIColor.whiteColor()]) 
    pickerLabel2.attributedText = mySubtitleTitle 
    pickerLabel2.textAlignment = .Left 

    returnLabel.addSubview(pickerLabel) 
    returnLabel.addSubview(pickerLabel2) 

    return returnLabel 
} 

func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { 
    return 60 
} 
+0

你的意思是你想在你的選擇器視圖兩列和每行每列都應該有自己'UILabel'? – rmaddy

回答

0

您沒有爲您的標籤指定幀。請參閱完整的片段:

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 

    let rowHeight:CGFloat = 60.0 
    let List = ["data1_1", "data1_2", "data1_3"] 
    let subtitleList = ["data2_1", "data2_2", "data2_3"] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 

    func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView { 

     var returnLabel: UIView! 
     var pickerLabel: UILabel! 
     var pickerLabel2: UILabel! 

     if view == nil { 
      returnLabel = UIView(frame: CGRectMake(0, 0, pickerView.frame.size.width, rowHeight)) 
      pickerLabel = UILabel(frame: CGRectMake(0, 0, returnLabel.frame.size.width, rowHeight/2)) 
      pickerLabel2 = UILabel(frame: CGRectMake(0, rowHeight/2, returnLabel.frame.size.width, rowHeight/2)) 
      returnLabel.addSubview(pickerLabel) 
      returnLabel.addSubview(pickerLabel2) 
     } 

     // title 

     let titleData = List 

     let myTitle = NSAttributedString(string: titleData[row], attributes: [NSFontAttributeName:UIFont(name: "Helvetica Neue", size: 17.0)!,NSForegroundColorAttributeName:UIColor.whiteColor()]) 
     pickerLabel.attributedText = myTitle 
     pickerLabel.textAlignment = .Center 

     // subtitle 

     let subtitleData = subtitleList 

     let mySubtitleTitle = NSAttributedString(string: subtitleData[row], attributes: [NSFontAttributeName:UIFont(name: "Helvetica Neue", size: 12.0)!,NSForegroundColorAttributeName:UIColor.whiteColor()]) 
     pickerLabel2.attributedText = mySubtitleTitle 

     return returnLabel 
    } 

    func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { 
     return rowHeight 
    } 

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     return 1 
    } 

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return List.count 
    } 

} 
+0

令人驚歎!非常感謝你,這是訣竅! – tigermatta