I've tagged the PickerViews 1 and 2 but I'm getting a "will not be executed" message on the func titleForRow, how do I solve this?
@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
}
Message here - will not be executed. Is it something to do with the IBOutlet names?
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?{
if (pickerView.tag == 1){
return "\(pickerColour[row])"
}else{
return "\(pickerSize[row])"
}
}
}
}
Problem is you have put titleForRow
delegate method inside the numberOfRowsInComponent
, it should be outside of that method as instance method of class.
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]
}
}
Note: You have already created outlet for both pickerView
then instead of comparing tag
in delegate method it is batter if you compare with your outlet.