1

I created UIPickerView programmatically in controller and I need to add an image to UIPickerView with corresponding label. When I created UIImageView programmatically and added to UIPickerView an error is coming saying that, UIImage cannot be added to UIPickerView.

How can I solve this problem. Thanks In advance

Indrajeet
  • 5,490
  • 2
  • 28
  • 43
sindhu kopparati
  • 223
  • 1
  • 3
  • 7
  • Can you please add your code ? – Sneha Feb 10 '17 at 06:34
  • Try this answer - http://stackoverflow.com/a/27769541/6602495 – Sneha Feb 10 '17 at 06:37
  • Possible duplicate of [How can I get images to appear in UI PickerView Component in Swift?](http://stackoverflow.com/questions/27769246/how-can-i-get-images-to-appear-in-ui-pickerview-component-in-swift) – Sneha Feb 10 '17 at 06:38

2 Answers2

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

    var myView = UIView(frame: CGRectMake(0, 0, pickerView.bounds.width, 60))

    var ImageView = UIImageView(frame: CGRectMake(0, 0, pickerView.bounds.width, 50))

    var row = String()
    switch row {
    case 0:
        row = “animal1”
        ImageView.image = UIImage(named:"animal1.jpg")
    case 1:
        row = “animal2”
        ImageView.image = UIImage(named:"animal2.jpg")
    case 2:
        default:
        rowString = "Error: too many rows"
        ImageView.image = nil
    }
    myView.addSubview(ImageView)

    return myView
}
Rohan Dave
  • 251
  • 1
  • 7
2

In Swift 3, try the following code:

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let myView = UIView(frame: CGRect(x: 0, y: 0, width: pickerView.bounds.width - 30, height: 60))
    let myImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
    var rowString = String()
    switch row {
    case 0:
        rowString = "Washington"
        myImageView.image = UIImage(named:"washington.jpg")
    case 1:
        rowString = "Beijing"
        myImageView.image = UIImage(named:"beijing.jpg")
    case 2: break
    default:
        rowString = "Error: too many rows"
        myImageView.image = nil
    }
    let myLabel = UILabel(frame: CGRect(x: 60, y: 0, width: pickerView.bounds.width - 90, height: 60))
    myLabel.text = rowString

    myView.addSubview(myLabel)
    myView.addSubview(myImageView)
    return myView
}
Sneha
  • 2,200
  • 6
  • 22
  • 36