>我已经标记了 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
,如果您与您的出口进行比较,那就是面糊。