"secondViewController"から"firstViewcontroller"にoutlet接続された
"background"の値を変更するにはどうすればよいのでしょうか?
ボタンを用意し、secondViewControllerを紐付けボタンを押すと、
「Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value」が表示されアプリが落ちました。
ご教示お願いいたします。
import UIKit class firstViewController: UIViewController { @IBOutlet weak var background: MyImageView! override func viewDidLoad() { super.viewDidLoad() print("firstViewControllerだよ") } }
import UIKit class secondViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() print("SecondViewControllerだよ") let f_vc = firstViewController() f_vc.background.backgroundColor? = UIColor.gray //エラー } }
ちなみにMyImageViewはこちらの構成になっております。
class MyImageView: UIImageView { func loadImage(url:String) -> Void { Alamofire.request(url).responseImage { response in //debugPrint(response debugPrint(response.result) if let image = response.result.value { //print("image downloaded: (image)") self.image = image } } } }
よくありがちな問題ですが、インスタンス生成だけではUI部品へのアクセスはできません。実現方法はいくつかありますが、とりあえずは以下を参考にされるとよろしいかと。
https://qiita.com/ARATAYOKOYAMA/items/9938cf8acfddf5c5424e
参考urlの通りに
secondViewControllerのviewDidLoad()の中身を
```
let fVC = self.storyboard?.instantiateViewController(withIdentifier: "first") as! firstViewController
fVC.background.backgroundColor = UIColor. gray
```
このように書き換えて実行しましたが、同じエラー内容で落ちてしまいました。もちろんstoryboard側でstoryboardIDの設定箇所にも"first"を入力しております。
参照された構成と、ご自身の構成が合っていないとうまく動作しません。もう少し内容を理解されてからが良いと思います。あえて指摘しておくと、参照しているページのtextはoutlet接続していません。
回答1件
あなたの回答
tips
プレビュー