ユーザー定義ランタイム属性の追加
対応する Interface Builder のインスペクタがないオブジェクトにカスタムのランタイム属性の初期化を追加します。nib ファイルがロードされると、指定したカスタム属性のそれぞれは、setValue:forKeypath の呼び出しで初期化されます。
手順
- Interface Builder でストーリーボードまたは xib ファイルを開きます。
- Interface Builder で、属性を追加するオブジェクトを選択します。
- [表示(View)] > [ユーティリティ(Utilities)] > [ID インスペクタの表示(Show Identity Inspector)] を選択します。
- ユーザー定義のランタイム属性エディタの左下にある追加ボタン (+) をクリックします。
- 属性のキーパスを編集するため、新しい属性の[キーパス(Key Path)] フィールドをダブルクリックします。
- 項目の[型(Type)] の属性をクリックし、表示されるポップアップメニューから型を選択します。
- [値(Value)] フィールドに、新しいカスタム属性の初期値を設定します。
ID インスペクタは、ユーティリティ領域に表示されます。以下に示すように、ユーザ定義のランタイム属性エディタは、インスペクタ内の項目の一つです。

以下に示すように新しいランタイム属性がエディタに表示されます。

例えば、isDataLoaded と呼ばれるランタイムプロパティを初期化するには、"キーパス" を"isDataLoaded" に置き換えます。同様に、exercise 辞書の yoga キーを初期化するには、"excersize.yoga"と入力します。
Return キーを押して値を確定します。

値のエディタは、ステップ6で設定した[型] に応じて異なります。
値型 | オブジェクト型 | エディタ |
---|---|---|
Boolean | NSNumber | チェックボックス。チェックされると true。チェックされないと false。 |
数 | NSNumber | 有効な数値を受け付けるテキストエディタ。Xcode で無効な数値を入力するとエラーダイアログを提示します。 |
文字列 | NSString | 任意の有効な文字列を受け付けるテキストエディタ。 |
ローカライズされた文字列 | NSLocalizedString | 任意の有効な文字列を受け付けるテキストエディタ。ローカライズされた文字列のファイルにエントリを追加します。 |
ポイント | CGPoint | x と y の両方が有効な CGFloat 値の形式 {X,Y} 内の数値のペアを受け付けるテキストエディタ。 |
サイズ | CGSize | width と height が有効な CGFloat 値の形式 {width,height} 内の数値のペアを受け付けるテキストエディタ。 |
Rect | CGRect | {{X,Y},{width,height}} すべてのエントリが有効な CGFloat 値の形式の数字の二つのペアを受け付けるテキストエディタ。 |
Range | NSRange | location と range が有効な NSUInteger の値の形式 {location,range} の数値のペアを受け付けるテキストエディタ。 |
色 | CGColor | カラーエディタ。 |
イメージ | iOS 上の UIImage または OX 上の NSImage | アセットカタログや画像を含むリソースファイルのイメージの名前。 |
Nil | Nil | エディタなし。 |
ユーザ定義の実行時の属性は、Interface Builder インスペクタを持たないオブジェクトの初期値を設定するため使用して下さい。たとえば、カスタムビューの ID インスペクタで以下のエントリを追加する場合:

nib がロードされると、カスタムビューには、このメッセージが表示されます。
[customView setValue:[NSNumber numberWithBoolean:NO] forKeyPath:@"isDataLoaded"]; [customView setValue:@"Hatha" forKeyPath:@"excersize.yoga"]; [customView setValue:nil forKeyPath:@"myData"];
重要: ユーザー定義のランタイム属性のプロパティまたはキーパスはオブジェクト内に存在していなければならず、そうでなければ例外が発生します。
関連記事
決定済みの議論
(なし)