2016-07-14 8 views
-1

カスタムビューを作成しようとしています。しかし、@IBOutletをバインドするとロードされないため、NIL(null)として起動するようです。@IBOutletにバインドすると、カスタムビューがメインビューにロードされません。

私の次のカスタムビューは、この(簡体字)

import UIKit 

class CounterView: UIView { 
    private let progressLayer: CAShapeLayer = CAShapeLayer() 
    private var progressLabel: UILabel = UILabel() 

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

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

    override func awakeFromNib() { 
     super.awakeFromNib() 
     setupView() 

    } 

    private func setupView() { 
     // setup the view 
    } 

    // some update and create methods on the progressLayer and progressLabel 

} 

あなたが見ることができるように、私はINITでそれをロードしていると私はそれが実際にロードするかどうかを確認するために、それらの内側の印刷方法を試してみました、そしてそれがないように見えます。

私のViewControllerは、1つのストーリーボードを使用するこのように見えます。

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet var counterView: CounterView! 
} 

私はストーリーボードのカスタムクラスにバインドしました。 enter image description here

だから私はcounterViewおよび/またはそのメソッドを呼び出そうとするたびに、私はこのエラーを取得しています:fatal error: unexpectedly found nil while unwrapping an Optional value

+1

ストーリーボードでコンセントを正しく接続しましたか? –

+0

私は馬鹿だと感じました、それは確かに私が忘れたものでした。私は最後の数時間、私を夢中にさせてくれました。 – Sigils

答えて

2

So every time I try to call counterView and/or its methods I am getting this error

しかし、問題はどのようにそれを行うかにあります。

たとえば、ViewController()と言う場合、ストーリーボードのデザインを知らなくても「分離した」ViewControllerを作成するので、そのcounterViewは確かにnilです。

prepareForSegueの場合、宛先ビューコントローラがViewControllerの場合、そのコンセントはまだ接続されておらず、counterViewnilになります。

関連する問題