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

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

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

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

Swift

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

Q&A

0回答

361閲覧

【Swift】Delegateがうまく機能しません

suzuki-0

総合スコア0

Xcode

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

Swift

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

0グッド

0クリップ

投稿2021/09/05 04:48

編集2021/09/07 08:36

初めて質問させていただきます。
遷移先のViewのCollectionViewのCellに入っているそれぞれのImageViewを押したら遷移元のViewに戻り遷移元のImageViewに選んだ画像が反映されるようにしたいです。
delegateを使って実装しようとしましたがうまくできませんでした。
アプリ自体はStudyPlusのようなアプリをイメージしています。![イメージ説明イメージ説明イメージ説明

遷移元のソースコード

Swift

1import UIKit 2 3protocol didChoiseMaterialDelegate { 4 5 func changeImage() 6 7} 8 9class choiseIconsViewController: UIViewController{ 10 11 12 var delegate: didChoiseMaterialDelegate? 13 14  〜省略〜 15 16 let appDlegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate 17 18} 19 20extension choiseIconsViewController: UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout { 21 22 //cellが押された時の処理 23 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 24 25 self.delegate?.changeImage() 26 27 self.dismiss(animated: false, completion: nil) 28 29 } 30 31 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 32 return icons.count 33 } 34 35 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 36 let cell:UICollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) 37 38 let imageView = cell.contentView.viewWithTag(1) as! UIImageView 39 40 let cellImage = UIImage(named: icons[indexPath.row])//各セルにiconsの画像を反映 41 let resizedImage = cellImage?.resized(withPercentage: 0.05)//画像のデータサイズを縮小 42 imageView.image = resizedImage 43 44 appDlegate.iconImage = imageView.image 45 46 return cell 47 } 48 49 〜省略〜 50}

遷移先のソースコード

Swift

1import UIKit 2 3class addMaterialViewController:UIViewController,didChoiseMaterialDelegate{ 4 5 let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate 6 7 @IBOutlet weak var addImageStackView: UIStackView! 8 @IBOutlet weak var addMaterialImageView: UIImageView! 9 @IBOutlet weak var materialName: UITextField! 10 @IBAction func tappedMaterialName(_ sender: Any) { 11 12 } 13 14 @IBOutlet weak var addCategory: UIStackView! 15 16 override func viewDidLoad() { 17 18 super.viewDidLoad() 19 20 materialName.delegate = self 21 22 //stackViewがタップされた時に処理を実行 23 let tapGestrureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tappedStackView)) 24 self.addImageStackView.addGestureRecognizer(tapGestrureRecognizer) 25 26 addMaterialImageView.image = appDelegate.iconImage 27 28 } 29 30 func changeImage() { 31 print("success") 32 addMaterialImageView.image = appDelegate.iconImage 33 } 34 35 〜省略〜 36}

試したこと

ネットでdelegateの実装方法を調ベて試した

補足情報

Xcode Version12.5.1

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.45%

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

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

質問する

関連した質問