IB_designable を調べてみましたが、これは本当に素晴らしい機能です。ただし、私が抱えている問題の 1 つは、ビューごとに UIView をサブクラス化する必要があることです。そのサブクラス内で、initWithCoder: メソッドと prepareForInterfaceBuilder: 内の UI 要素を指定する必要があります。
ただし、クラスの外側の UI 要素を指定できるようにしたいと考えています。
外部から設定してInterfaceビルダーで見ることができるパブリックプロパティを持つUIViewサブクラスを作りたいです。
これは可能ですか?
アップデート:
IBInspectible を認識しています。これにより、属性インスペクターでプロパティを使用できるようになります。これは、外部とは言いません。
IB_DESIGNABLE
@interface DesignableLabel : UILabel
@end
@implementation DesignableLabel
@end
@interface SomeClass : UIViewController {
IBOutlet DesignableLabel *DL;
}
@end
@interface SomeClass
- (void)prepareForInterfaceBuilder {
DL.text = @"Hello World"
}
@end
DesignableLable は UILabel のサブクラスです。UILabels には text プロパティがあります。SomeClass にそのプロパティを何らかの形で設定してもらいたい。通常、それを行ってアプリを実行すると、文字列が表示されるはずです。ただし、アプリを実行する手間を省くために、Interface builder に表示して、入力時にその値を確認できるようにしたいと考えています。