2015-09-09 21 views
11

IBからプロパティを設定するために、カスタムビューに@IBDesignableを作成しました。しかし、私はこのクラスがであり、私のクラスでその属性を持っているにもかかわらず、キー値コーディングに準拠していません。です。このクラスは@IBInspectableに対応するキー値ではありません

@IBDesignable class ExclusiveSelectorView: UIView { 
    @IBInspectable var cellWidth: CGFloat? 
} 

は(Test.ExclusiveSelectorView)上の(cellWidth)ユーザ定義の検査プロパティの設定に失敗しました:[setValueの:forUndefinedKeyは:]:このクラスは、キー値コーディング準拠キーcellWidthためではありません。

enter image description here

そして、これはあなたが@IBInspectableのためのnullとしてプリミティブを定義することはできません私のクラス enter image description here

+0

そのスクリーンショットは、そのビューまたはファイルの所有者のためにあるのですか? –

+0

はビュー用 – Godfather

+2

変数のセッターメソッドとゲッターメソッドを明示的に定義する必要があるかもしれません。このサイトをチェックしてください。http://nshipster.com/ibinspectable-ibdesignable/ –

答えて

9

です。あなたがそうしようとすると、これらのプロパティのいずれかの値を設定すると

、あなたはIBDesignable時に次の警告を得るでしょう:

@IBDesignable class TestDesignable IB Designables: Ignoring user defined runtime attribute for key path "testInt" on instance of "TestDesignable". Hit an exception when attempting to set its value: [ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key testInt.

し、実行時に

、次のエラーを取得します:

これを修正するには、オプションを非オプションに変更し、デフォルト値をゼロにします。

無効:

@IBDesignable class TestDesignable: UIView { 
    @IBInspectable var testInt: Int? = nil // crash 
    @IBInspectable var testFloat: CGFloat? = nil // crash 
    @IBInspectable var testPoint: CGPoint? = nil // crash 
    @IBInspectable var testColor: UIColor? = nil 
} 

有効:カスタムクラスのビットを示し

@IBDesignable class TestDesignable: UIView { 
    @IBInspectable var testInt: Int = 0 
    @IBInspectable var testFloat: CGFloat = 0 
    @IBInspectable var testPoint: CGPoint = .zero 
    @IBInspectable var testColor: UIColor? = nil 
} 
+0

なぜ '@IBInspectable var testColor:UIColor? = nil'はゼロになりますか?初めに「@IBInspectablesにnullを指定できるようにプリミティブを定義することはできません。 –

+2

@Santiagocarmonagonzález人々は通常、プリミティブとして「値型」を表します。 'UIColor'は参照型です。' nil'でもかまいません。要するに、DesignableはObj-CとObj-Cでは表現可能でなければならず、参照型は 'nil'のみでなければなりません。 – Sulthan

+2

私はこの超鈍器を作るためにあなたに1億ポイントを与えるでしょう。私はすぐに出てきたので、私が着手したほぼすべてのプロジェクトでこの "バグ"に遭遇しました。ありがとう! – atlex2

関連する問題