2017-10-02 10 views
-1

私は作業中のIBDesignableクラスを持っています。クラスにプロトコルを追加しようとすると、エラーが発生します。 "autolayoutのレンダリングと更新に失敗しましたステータス "IBDesignableクラスにデリゲートを追加するとUIがレンダリングされない

私はプロトコルを外してもうまく動作しますが、私が作成しようとしている機能の一部は非常に便利です。エラーを再現するために使用できるコード例

import UIKit 

protocol TestProtocol {} 

@IBDesignable class TestDesignableButton: UIButton {   
    var delegate: TestProtocol? 
} 

これを引き起こす原因は誰にも分かりますか?この問題を回避する方法があるかどうかは分かりますか?事前に

おかげ

+0

これはIBDesignable's 'でしばしば発生するバグです。私はちょうど彼らのバグのためにそれらを使用することを避ける。 – the4kman

+0

エラーを抑制する方法はありますか? IBDesignableクラスは引き続きデリゲートメソッドを使用して動作します。私は、アプリケーションを実行することができますそれはうまく、ちょうど私がデリゲートを追加するときにUIの要素はちょうどストーリーボードに表示されません – AdamM

答えて

2

変更するには、プロトコルの宣言:ここ

@objc protocol TestProtocol {} 

ことで、私のテストで働いて(私は少しあなたのコードを変更しましたが、あまり - だけで十分な私たちが持っていることを確認してください裸の骨が働いている)。設計可能なボタンは実際には緑色であることに注意してください。 IBDesignableコードが機能していなかった場合はそれはありません。また、右側のインスペクタで「最新の状態」と表示されます。

enter image description here

+0

恐ろしい、そのような単純な修正。あなたの助けに乾杯! – AdamM

関連する問題