2

何かカスタムが必要だったので、UIView サブクラスを作成しました。

次に、xibs の 1 つに UIView を追加し、クラスを UIView からカスタム クラスに変更しました。実行すると、カスタム クラスがインスタンス化されません。

どうすればいいですか?カスタム クラスのインスタンス化に使用するコンストラクタは?

4

2 に答える 2

2

xibインスタンス化されます

- (id)initWithCoder:(NSCoder *)decoder

の接続やその他のオブジェクトが利用可能であることに依存している場合はxib、コードを追加することもできます。

- (void)awakeFromNib

これは、オブジェクトが... is guaranteed to have all its outlet and action connections already established.


コードの重複に対処するには、次のようなことができます

- (instancetype)initWithFrame:(CGRect)frame
{
  self = [super initWithFrame:frame];
  if (self) {
    [self commonInit];
  }
  return self;
}

- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
  self = [super initWithCoder:aDecoder];
  if (self) {
    [self commonInit];
  }
  return self;
}

- (void)commonInit
{
  // any common setup
}
于 2013-04-15T10:16:48.883 に答える