2016-06-21 54 views
0

我有一个功能完整的UIPickerView在UITableViewCell里面,并且想完成两件事情。自定义uitableviewcell里面的uipickerview

UIPickerView显示4个组件,但第一个很少会提到。因此,我希望A(首选)使其显示空白为0并滚动到1,或者B修改颜色,使0不占主导地位。

其次,我想隐藏UIPickerView直到选中。

我发现了这两个选项,但都存在于UIViewController中,并且不在UITableViewCell中工作。

import UIKit 

class DiveDurationTableViewCell: UITableViewCell, UIPickerViewDelegate, UIPickerViewDataSource 

{ 
    @IBOutlet var textfieldBizCat: UITextField! 
    @IBOutlet var pickerBizCat: UIPickerView! = UIPickerView() 


    // --------------------------------------------------------------------------------------------- 
    // MARK: - Internal Constant 

    let numberOfComponents: Int    = 4 
    let FirstDigitComponentRows: Int  = 2 
    let SecondDigitComponentRows: Int  = 10 
    let ThirdDigitComponentRows: Int  = 10 
    let DisplayMinuteComponentRows: Int  = 1 

    let Minutes: String      = "Min" 
    let MinNumber       = 0 
    let MaxNumber       = 9 


    private var diveTime: Array<Int>  = [Int]() 

    var FirstDigit: Int      = 0 
    var SecondDigit: Int     = 0 
    var ThirdDigit: Int      = 0 
    var DisplayMinutes: String    = "Min" 


    // --------------------------------------------------------------------------------------------- 
    // MARK: - IBOutlets 

    @IBOutlet var diveTimePicker: UIPickerView! 


    // --------------------------------------------------------------------------------------------- 
    // MARK: - UITableVieCell Methods 


    // 
    // Called when we are initialized from a storyboard or nib file. 
    // 
    override func awakeFromNib() 
    { 
     super.awakeFromNib() 


     // 
     // We create an array of integers from 0 to 9. 
     // 

     for i in self.MinNumber ..< self.MaxNumber+1 
     { 
      self.diveTime.append(i) 
     } 

     self.diveTimePicker.selectRow(0, inComponent: 0, animated: true) 
     self.diveTimePicker.selectRow(0, inComponent: 1, animated: true) 
     self.diveTimePicker.selectRow(0, inComponent: 2, animated: true) 

    } 

    // 
    // The item has been selected in the table. 
    // 

    override func setSelected(selected: Bool, animated: Bool) 
    { 
     super.setSelected(selected, animated: animated) 
    } 



    // --------------------------------------------------------------------------------------------- 
    // MARK: - UIPickerViewDataSource Methods 


    // 
    // Number of components in the picker. 
    // 

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int 
    { 
     return self.numberOfComponents 
    } 

    // 
    // Number of rows in each component. 
    // 
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
    { 
     if component == 0 
     { 
      return self.FirstDigitComponentRows 
     } else if component == 1 { 
      return self.SecondDigitComponentRows 
     } else if component == 2 { 
      return self.ThirdDigitComponentRows 
     } else { 
      return self.DisplayMinuteComponentRows 
     } 
    } 

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? 
    { 

     if component == 0 
     { 
      return String(self.diveTime[row]) 
     } 
     if component == 1 
     { 
      return String(self.diveTime[row]) 
     } 
     if component == 2 
     { 
      return String(self.diveTime[row]) 
     } 

     else 
     { 
     return self.DisplayMinutes 
      } 
     } 


    // 
    // The user has selected in item in the picker view. 
    // 
    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
    { 
    } 
} 

更新: 我不问如何创建一个选择器视图,如上面的代码的伟大工程。我只问如何定制它,使其更具吸引力。

+1

可能重复的[UIPickerView在UITableView](http://stackoverflow.com/questions/19646822/uipickerview-in-uitableview) – Sandy

回答

1

UITableView是UIScrollview的子类,UIPicker也是scrollview,你需要处理很多事情才能使它们一起工作。 首先,当你使用Picker在UITableview单元格上滚动时,哪一个是第一个响应?如果选择器是第一个响应,并且选择器的大小太大,比如设备屏幕大,则不能再滚动表格视图。如果tableview是第一个响应,则不能滚动选取器,因为表视图将滚动。 我建议你添加Picker View作为tableview/controller.view的子视图,在你想添加Picker之前的单元格的位置/框架上,尝试像TableView单元格内的Picker一样伪造。

+0

嗨贴纸,感谢您的答复。实际上,该应用程序已接近完成,并且只是试图将其定制为更好的外观。目前的选取器视图效果很好,只是没有那么吸引人。这就是问题的原因。谢谢 –