2 同一视图控制器上的 PickerViews - titleForRow 基金 "will not be executed"



>我已经标记了 PickerViews 1 和 2,但我在 func titleForRow 上收到"不会被执行"的消息,我该如何解决这个问题?

@IBOutlet weak var shoeDetailPic: UIImageView!
@IBOutlet weak var shoeDetailName: UILabel!
@IBOutlet weak var shoeDetailPrice: UILabel!
@IBOutlet weak var shoeColourPickerView: UIPickerView!
@IBOutlet weak var shoeSizePickerView: UIPickerView!
var pickerColour = [""]
var pickerSize = [""]
var getName = String()
var getPrice = String()
var getImage = UIImage()

override func viewDidLoad() {
super.viewDidLoad()

shoeDetailPic.image = getImage
shoeDetailName.text = getName
shoeDetailPrice.text = getPrice
pickerColour = ["Gold", "Black", "Red"]
pickerSize = ["35", "36", "37", "38", "39", "40", "41", "42"]
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component:   Int) -> Int {
    if (pickerView.tag == 1){
        return pickerColour.count
    }else{
        return pickerSize.count
    }

此处的消息 - 不会执行。这与IBOutlet的名字有关吗?

  func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent    component: Int) -> String?{
        if (pickerView.tag == 1){
            return "(pickerColour[row])"
        }else{
            return "(pickerSize[row])"
        }
}
}
}

问题是你把titleForRow委托方法放在numberOfRowsInComponent里面,它应该作为类的实例方法在该方法之外。

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    if (pickerView == shoeColourPickerView){
        return pickerColour.count
    }else{
        return pickerSize.count
    }
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    if (pickerView == shoeColourPickerView){
        return pickerColour[row]
    }else{
        return pickerSize[row]
    }
}

备注:您已经为两个pickerView创建了出口,而不是在委托方法中比较tag,如果您与您的出口进行比较,那就是面糊。

最新更新