Почему картинка не отображается с UIPickerView? - PullRequest
0 голосов
/ 18 декабря 2018

Что делать

Я надеюсь показать картинку и сообщение, когда пользователь использует UIPickerView.Теперь он может показать сообщение с UIPickerview, однако изображение не отображается.Я хотел использовать массив, но я не могу использовать.Вот почему я написал код и сделал ошибку.

Что случилось?

Я попытался создать код для показа изображения, когда выбран UIPickerView. Приложение готово и показано.Однако изображение не отображается.

Источник

// ViewController.swift

import UIKit

 class ViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate {
    @IBOutlet weak var introduce: UITextView!
    @IBOutlet weak var imageV: UIImageView!
    @IBOutlet weak var pickerview: UIPickerView!
    let names = ["A","B","C","D","E"]
    let message = [
        "A",
        "B",
        "C",
        "D",
        "E"]


    //let picture = ["A.png","B.png","C.png","D.png","E.png"]



    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        // Delegate Setting
        pickerview.delegate = self
        pickerview.dataSource = self

    }

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    var rownumber = 0

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return names.count
    }

    func pickerView1(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
    -> Int {
        rownumber = row
        return rownumber

    }


    // What UIPickerView shows at first time
    func pickerView(_ pickerView: UIPickerView,
                    titleForRow row: Int,
                    forComponent component: Int) -> String? {

        return names[row]
    }


    func readimg(rimg:Int) -> UIImageView {
        if rownumber == 0 {

            let imageV1 = UIImage(named:"A.png")
            imageV.image = imageV1

        }
        if rownumber == 1 {

            let imageV1 = UIImage(named:"B.png")
            imageV.image = imageV1

        }
        if rownumber == 2 {

            let imageV1 = UIImage(named:"C.png")
            imageV.image = imageV1

        }
        if rownumber == 3 {

            let imageV1 = UIImage(named:"D.png")
            imageV.image = imageV1

        }
        if rownumber == 4 {

            let imageV1 = UIImage(named:"E.png")
            imageV.image = imageV1

        }

        return imageV

    }

    // When Row Of UIPickerView is selected
    func pickerView(_ pickerView: UIPickerView,
                    didSelectRow row: Int,
                    inComponent component: Int) {
       introduce.text  = message[row]

        // If I write it sentence, it has error.
       readimg(rimg: Int)
       // Error Code (Editor placeholder in source file/Cannot convert value of type 'Int.Type' to expected argument type 'Int')


    }



}

Что я сделал?

Я проверяю все ошибки ирешить.

1 Ответ

0 голосов
/ 18 декабря 2018

Вам необходимо передать целочисленное значение методу readimg(rimg: Int).Поэтому измените его так, чтобы оно передавало значение строки в методе pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int).

Таким образом, оно становится таким.

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
   introduce.text  = message[row]
   readimg(rimg: row)
}

В дополнение к этому, метод readimg не должен возвращать UIImageView если вы решите присвоить imageV значение внутри этой функции, возможно, вы захотите изменить сигнатуру его метода для возврата void.

func readimg(rimg:Int) {
  // Your method implementation
}
...