質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

773閲覧

【Swift】画面遷移時の値・受け渡し方

skt9

総合スコア1

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/06/09 14:38

【Swift】画面遷移時の値・受け渡し方

SwiftでViewControllerよりAPIで取得した画像をButtonでLikeなのかButなのかを押下しLikeが押された時だけLike押下時の画像を保存
TabuleViewのCellにviewcontrollerでLike押下時に保存した画像を画面遷移させたいのですが上手く画像が反映されない

発生している問題・エラーメッセージ

@IBAction func goodButton(_ sender: Any) { count = count + 1 print(count) LikeImage = KensakuImage //←の後なんて記述すれば上手くLikeImageに押下時の画像が入るのか

遷移元のソースコード

import UIKit import Alamofire import SwiftyJSON import SDWebImage import Photos class ViewController: UIViewController { @IBOutlet weak var serchTextField: UITextField! @IBOutlet weak var KensakuImage: UIImageView! var count = 0 var LikeImage = [UIImage]() override func viewDidLoad() { super.viewDidLoad() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.isNavigationBarHidden = true } //検索キーワードの値を元に画像を引っ張ってくる //pixabay.com func getImages(keyword:String){ //APIKEY 9848333-b62d95ad945f6aae7e4f88e49 let url = "https://pixabay.com/api/?key=19848333-b62d95ad945f6aae7e4f88e49&q=(keyword)" //alamofireを使ってhttpリクエストを投げる AF.request(url, method:.get, parameters: nil, encoding: JSONEncoding.default).responseJSON { (response) in switch response.result { case.success: let json:JSON = JSON(response.data as Any) var imageString = json["hits"][self.count]["webformatURL"].string if imageString == nil{ imageString = json["hits"][0]["webformatURL"].string self.KensakuImage.sd_setImage(with: URL(string: imageString!), completed: nil) }else{ self.KensakuImage.sd_setImage(with: URL(string: imageString!), completed: nil) } case.failure(let error): print(error) } } } @IBAction func serchButton(_ sender: Any) { self.count = 0 if serchTextField.text == ""{ getImages(keyword: "funny") }else{ getImages(keyword:serchTextField.text!) } } @IBAction func goodButton(_ sender: Any) { count = count + 1 print(count) LikeImage = KensakuImage //←の後なんて記述すれば上手くLikeImageに押下時の画像が入るのか // selectimages1.append() if count == 10 { // 10回押された時に遷移させる self.performSegue(withIdentifier: "nextVC", sender: nil) } if serchTextField.text == ""{ getImages(keyword: "funny") }else{ getImages(keyword:serchTextField.text!) } } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "nextVC"{ // segue.destination = 遷移先 // 遷移先 = GoodViewController let goodView = segue.destination as? GoodViewController // GoodViewControllerの中のselectimages print(KensakuImage) goodView?.selectimages = KensakuImage.image! } } @IBAction func badButton(_ sender: Any) { count = count + 1 if serchTextField.text == ""{ getImages(keyword: "funny") }else{ getImages(keyword:serchTextField.text!) } } } ```遷移先

import UIKit

class GoodViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

@IBOutlet weak var tableView: UITableView! var selectimages = UIImage() override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self print(selectimages) // Do any additional setup after loading the view. } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 10 } func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 390 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) let imageView = cell.contentView.viewWithTag(1) as! UIImageView imageView.image = selectimages return cell } @IBAction func backButton(_ sender: Any) { dismiss(animated: true, completion: nil) }

}

### 試したこと var LikeImage = [UIImage]()の画像が入る配列を作り ボタンが10回タップの時だけ入るようにしたかったので @IBAction func goodButton(_ sender: Any) { count = count + 1 print(count) LikeImage = KensakuImage //←の後なんて記述すれば上手くLikeImageに押下時の画像が入るのか 調べて入力したりするも上手く行かない 調べては書き直したりしているのでコードがめちゃくちゃになっておりますが、暖かい目でご回答いただけると幸いです。 ### 補足情報(FW/ツールのバージョンなど) Xcode 12.5 ios 14.6 ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

LikeImageは配列なので、配列にUIImageを追加するようにする

diff

1- LikeImage = KensakuImage //←の後なんて記述すれば上手くLikeImageに押下時の画像が入るのか 2+ LikeImage += KensakuImage.image

ところで LikeImage は配列 (複数のアイテムを取り扱う) なので変数名は複数形にするとかしたほうがいいし、 KensakuImage は UIImageView のインスタンスであることがわかりやすい変数名にしたほうがいいですね。私なら likeImages と searchedImageView とかにするかな。

遷移先にUIImageの配列を渡す

diff

1- goodView?.selectimages = KensakuImage.image! 2+ goodView?.selectimages = LikeImage

遷移元はUIImageの配列を受け取る

diff

1- var selectimages = UIImage() 2+ var selectimages = [UIImage]()

渡された画像の数だけ表示する

diff

1func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 2- return 10 3+ return selectimages.count 4} 5 6func numberOfSections(in tableView: UITableView) -> Int { 7 return 1 8} 9func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 10 return 390 11} 12 13func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 14 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) 15 16 let imageView = cell.contentView.viewWithTag(1) as! UIImageView 17- imageView.image = selectimages 18+ imageView.image = selectimages[indexPath.row] 19 return cell 20 21}

投稿2021/06/10 00:24

編集2021/06/10 00:29
thyda.eiqau

総合スコア2982

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

skt9

2021/06/10 01:15

ありがとうございます‼︎ 無事にできました‼︎ わかりやすい解答と解説で勉強になりました‼︎ ありがとうございます‼︎
guest

0

投稿2021/06/10 01:13

編集2021/06/10 01:17
skt9

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問