XCode、Swift:ButtonとPickerViewの選択に合わせて画像を表示したい
解決したいこと
XCode、Swiftの質問です。Storyboardを使っています。
ButtonとPickerViewの選択に合わせた画像を表示したいです。
Buttonを3つ【イルカ】【犬】【猫】を設置し、PickerViewを1つ:データリスト【【青、赤、黄色】、【丸、四角】】を設置しました。
Buttonで最後に押された項目(例えば:イルカ)とPickerViewの1つ目のコンポーネントで選択されたデータ(例えば:青)を組み合わせた画像(例えば:青いイルカ)を表示するアプリを作成したいです。
用意している画像(と画像名、すべてpng file)は次の9つです。
青いイルカ(iruka-1)、青い犬(inu-1)、青い猫(neko-1)、
赤いイルカ(iruka-2)、赤い犬(inu-2)、赤い猫(neko-2)、
黄色いイルカ(iruka-3)、黄色い犬(inu-3)、黄色い猫(neko-3)
発生している問題・エラー
Buttonを押したときに画像が表示されますが、PickerViewで選択が起こったときには表示されません。
PickerViewで選択した際にも該当の画像が表示されるようにしたいです。
該当するソースコード
import UIKit
class ViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource {
//Storyboardとの設定・紐付け
@IBOutlet weak var ImageView: UIImageView!
@IBOutlet var pickerview: UIPickerView!
@IBOutlet var Button01: UIButton!
@IBOutlet var Button02: UIButton!
@IBOutlet var Button03: UIButton!
//imageList(画像名の割当)
let imageList = [["1","2","3"],["maru","shikaku"]]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
//UIPickerViewの列の数を返す
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return imageList.count
}
//UIPickerViewの行数、リストの数を返す
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return imageList[component].count
}
//UIPickerViewの画面での表示を指定する
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?{
return imageList[component][row]
}
//画像を表示するfunc
func view_image(file_image: String){
let file_image2 = "\(imageList[pickerview.selectedRow(inComponent:0)]).png"
ImageView.image = UIImage(named: "\(file_image)\(file_image2)")
}
//Buttonが押されたときのAction
@IBAction func tapButton01(_ sender: Any){
let file_image = "iruka-"
view_image(file_image: file_image)
}
@IBAction func tapButton02(_ sender: Any){
let file_image = "inu-"
view_image(file_image: file_image)
}
@IBAction func tapButton03(_ sender: Any) {
let file_image = "neko-"
view_image(file_image: file_image)
}
//UIPickerViewが選択されたときの動作
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
view_image(file_image: file_image)
}
override func didReceiveMemoryWarning() {
super.viewDidLoad()
}
}
自分で試したこと
pickerView内に引数を受け渡すことができない+Buttonで設定したfile_imageを@IBAction外で引き継げないという2つの問題がありそうです。ですが解決方法が分からなく、困っています。
よろしくお願いいたします。
0 likes