Delegateを利用したデータの受け渡しについて

異なるビューへのデータ受け渡しの方法を知りたいです。

2つのビューがあるのですが、Delegateの練習をしています。
片方の処理結果をMainのViewControllerのボタンで表示するようにしたいです。

ViewControllerだけを使ったときはできていたのですが、Delegate練習のため、切り離しを行うとうまく受け渡しができません。

Swift初心者です。多分、すごく簡単なことな気がするのですが、わかりやすく教えていただきたいです。よろしくお願いします。

前提

ViewControllerにボタンがあります。そのボタンを押すと、YumemiDelegateにセットした天気情報を拾ってきて天気を出したいです。

該当のソースコード

ViewController

1import UIKit 2 3 4class ViewController: UIViewController{ 5 6 7 8 @IBOutlet weak var weatherImg: UIImageView! 9 10 11 @IBAction func btnReload(_ sender: Any) { 12 self.tenki() 13 } 14 15 16 @IBAction func CloseView(_ sender: Any) { 17 self.dismiss(animated: true, completion: nil) 18 } 19 20 21 override func viewDidLoad() { 22 super.viewDidLoad() 23 } 24 25} 26 27extension ViewController: YumemitenkiDelegate{ 28 func tenki() { 29 30 } 31} 32

YumemiDelegate

1import Foundation 2import YumemiWeather 3 4protocol YumemitenkiDelegate: AnyObject { 5 6 func tenki() 7} 8 9class Yumemitenki { 10 11 weak var delegate: YumemitenkiDelegate? 12 13 14 15 // let weather = YumemiWeather.fetchWeatherCondition() 16 17 18// if weather == "sunny" { 19// self.weatherImg.image = UIImage(named: "sunny")?.withTintColor(UIColor.red) 20// } else if weather == "cloudy" { 21// self.weatherImg.image = UIImage(named: "cloudy")?.withTintColor(UIColor.gray) 22// } else if weather == "rainy" { 23// self.weatherImg.image = UIImage(named: "rainy")?.withTintColor(UIColor.blue) 24// } 25 26 func Weather() { 27 self.delegate?.tenki() 28 29 } 30}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント