前提・実現したいこと
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で選択した際にも該当の画像が表示されるようにしたいです。
該当のソースコード
Swift
1import UIKit 2 3 4class ViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource { 5 //Storyboardとの設定・紐付け 6 7 @IBOutlet weak var ImageView: UIImageView! 8 9 @IBOutlet var pickerview: UIPickerView! 10 11 @IBOutlet var Button01: UIButton! 12 @IBOutlet var Button02: UIButton! 13 @IBOutlet var Button03: UIButton! 14 15 //imageList(画像名の割当) 16 let imageList = [["1","2","3"],["maru","shikaku"]] 17 18 override func viewDidLoad() { 19 super.viewDidLoad() 20 // Do any additional setup after loading the view. 21 } 22 //UIPickerViewの列の数を返す 23 func numberOfComponents(in pickerView: UIPickerView) -> Int { 24 return imageList.count 25 } 26 27 //UIPickerViewの行数、リストの数を返す 28 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{ 29 return imageList[component].count 30 } 31 32 //UIPickerViewの画面での表示を指定する 33 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?{ 34 return imageList[component][row] 35 } 36 37 //画像を表示するfunc 38 func view_image(file_image: String){ 39 let file_image2 = "(imageList[pickerview.selectedRow(inComponent:0)]).png" 40 ImageView.image = UIImage(named: "(file_image)(file_image2)") 41 } 42 43 //Buttonが押されたときのAction 44 45 @IBAction func tapButton01(_ sender: Any){ 46 let file_image = "iruka-" 47 view_image(file_image: file_image) 48 } 49 @IBAction func tapButton02(_ sender: Any){ 50 let file_image = "inu-" 51 view_image(file_image: file_image) 52 } 53 54 @IBAction func tapButton03(_ sender: Any) { 55 let file_image = "neko-" 56 view_image(file_image: file_image) 57 } 58 59 //UIPickerViewが選択されたときの動作 60 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){ 61 62 view_image(file_image: file_image) 63 } 64 65 66 67 override func didReceiveMemoryWarning() { 68 super.viewDidLoad() 69 } 70 71 72} 73
試したこと
pickerView内に引数を受け渡すことができない+Buttonで設定したfile_imageを@IBAction外で引き継げないという2つの問題がありそうです。
補足情報
Storyboard(UIkit)を使っています。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー