前提・実現したいこと
はじめまして。Swift初学者です。
・作成したxibを別のSwiftファイルで呼び出し。
・xib上のUIImageViewを使用。
xib上のUIImageViewがnilだとエラーがでます。
発生している問題・エラーメッセージ
シミュレーター上で動作確認してみると
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
のエラーが目的のViewまでいくと発生します。
まだ、optional型と他のクラスをインスタンス化してその中の変数を利用するのに不慣れなため
問題の解決方法がわかりません。
お手数おかけしますが、ご助力お願いいたします。
該当のソースコード
swift
1class HeadacheMake011: UIViewController { 2 3 @IBOutlet weak var headMake011View: HeadacheMakeTextView! 4 var headachePointR01: UIImageView! 5 var headachePointR02: UIImageView! 6 var headachePointL01: UIImageView! 7 var headachePointL02: UIImageView! 8 var headacheFront: HeadacheFront! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 13 headachePointR01 = headacheFront.headachePointR01 14 headachePointR01 = headacheFront.headachePointR02 15 headachePointL01 = headacheFront.headachePointL01 16 headachePointL02 = headacheFront.headachePointL02 17}
xibファイルを管理するswiftファイル
import UIKit @IBDesignable class HeadacheFront: UIView { @IBOutlet weak var headachePointR01: UIImageView! @IBOutlet weak var headachePointR02: UIImageView! @IBOutlet weak var headachePointL01: UIImageView! @IBOutlet weak var headachePointL02: UIImageView! @IBOutlet weak var baseView011: UIView! //initは、シミュレータや実機など実際にiOS上のアプリで実行する時の処理 override init(frame: CGRect) { super.init(frame: frame) loadFromNib() } //initは、シミュレータや実機など実際にiOS上のアプリで実行する時の処理 required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) loadFromNib() } //prepareForInterfaceBuilderは、Storyboardで表示する時にMac上で実行する処理 override func prepareForInterfaceBuilder() { loadFromNib() } ////実際にxibファイルを読み込む関数 private func loadFromNib() { let HeadacheFrontNib = UINib(nibName: "HeadacheFront", bundle: Bundle(for: HeadacheFront.self)).instantiate(withOwner: self, options: nil)[0] as! UIView HeadacheFrontNib.frame = self.bounds //枠を設定? addSubview(HeadacheFrontNib) //呼び出しviewに貼り付ける } }
試したこと
var headacheFront: HeadacheFront!
をインスタンス化する必要があるかと考え、
var headachePointr01 = headacheFront.headachePointR01
headachePointR01 = headachePointr01
としましたが、エラー状況に変化無し。
補足情報(FW/ツールのバージョンなど)
OS:10.12.16
Xcode:ver.9.2
Swift4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。