2016-11-08 17 views
0

viewControllerにサブビューを追加しようとしています。これを実行するために、xibファイルとそれに関連するクラスを作成しました。関連クラスのコードは次のとおりです。アプリが突然クラッシュするSuper.init(コーダー:aDecoder)

import UIKit 

@IBDesignable class CustomClassViewController: UIView { 

@IBOutlet weak var myLabel: UILabel! 

var Dummyview : UIView! //= UIView() 

override init(frame: CGRect) { 
    super.init(frame: frame) 
    setup() 
} 

required init (coder aDecoder : NSCoder){ 

    super.init(coder : aDecoder)! 
    setup() 
} 

func setup() { 
    Dummyview = loadViewFromNib() 
    Dummyview.frame = bounds 
    Dummyview.autoresizingMask = UIViewAutoresizing.FlexibleWidth 
    Dummyview.autoresizingMask = UIViewAutoresizing.FlexibleHeight 
    addSubview(Dummyview) 
} 

func loadViewFromNib() -> UIView { 
    let bundle = NSBundle(forClass : self.dynamicType) 
    let nib = UINib(nibName: "Custom View", bundle: bundle) 
    let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView 
    return view 
} 

アプリケーションを実行する前にエラーは表示されませんが、アプリケーションを実行するとクラッシュします。エラーは以下のように示す:

"脅威1:EXC_BAD_ACCESS(コード= 2、アドレス= 0x7fff52776e88)"

super.init(coder : aDecoder)!

しかしエラー出力で

herehereで提供されているソリューションを試しましたが、機能しませんでした。

どうすればよいですか?どんな解決策ですか?私にお知らせください。 ありがとうございます

答えて

0

コーダーで初期化が失敗する可能性がありますので、ここで強制解除しないでください。以下を試してください。

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    setup() 
} 

また、クラスCustomClassViewControllerはUIViewのサブクラスであり、UIViewControllerではありません。この行を変更し

@IBDesignable class CustomClassViewController: UIView { 

class CustomClassViewController: UIViewController { 

への注意:ビューコントローラは、ペン先がインターフェイスビルダーでクラスのセットを持っているべきではありませんIBDesignable

+0

コメントありがとうございます。私はあなたの提供されたソリューションを試しましたが、それは私のために働いていません別のもの@IBDesignableとしてクラスを宣言しなければ、それはサブビューとしてビューコントローラに表示されません –

+0

ホワイ "サブビューとしてビューコントローラに表示されません"という意味ですか?IBDesignableを最初に使用する方法を教えてください。ここには本当に良い記事があります: http://nshipster.com/ibinspectable-ibdesignable/ UIViewControllerはIBDesignableにすることはできません。ビューとViewControllerを混乱させています。あなたは何を正確にしたいですか? IBDesignable UIView、またはUIViewController? – Istvan

0

することはできません。さもなければ、あなたのクラスがそれを呼び出すたびに自分自身をインスタンス化しようとするとき、無限ループを起こします。

このビューテンプレートをストーリーボードで使用する場合は、ビューをプルしてカスタムビュークラスに設定します。

関連する問題