カスタムViewをNibから初期化の最新版こちらの記事を参考にカスタムViewをnibから初期化しようと考えているのですが以下のようなエラーが表示されクラッシュしてしまいます。
独自で作ったcutomViewは以下のとうりです。
Swift
1class CustomView: UINibView { 2 3 @IBOutlet weak var label: UILabel! 4}
参照先にあったコードもそのままでは動かなかったので以下のように修正をしました。
class UINibView: UIView { // コードから初期化はここから override init(frame: CGRect) { super.init(frame: frame) comminInit() } // Storyboard/xib から初期化はここから required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) comminInit() } // 初期化後に呼びされる。 func afterInit() {} // xibからカスタムViewを読み込んで準備する private func comminInit() { // MyCustomView.xib からカスタムViewをロードする let bundle = Bundle(for: type(of: self)) let nib = UINib(nibName: "CustomView", bundle: bundle) //swiftlint:disable force_cast let view = nib.instantiate(withOwner: self, options: nil).first as! UIView addSubview(view) // カスタムViewのサイズを自分自身と同じサイズにする view.translatesAutoresizingMaskIntoConstraints = false let bindings = ["view": view] addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[view]|", options: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: bindings)) addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[view]|", options: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: bindings)) self.afterInit() } }
どこが間違っているか全くわからず手が止まってしまいました。
どこでミスをしてしまっているのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。