Xib ファイルが関連付けられたカスタム UIView サブクラスを用意しました。ストーリーボードに UIView を配置し、そのクラスをカスタム サブクラスに設定します。カスタム ビューの initWithCoder: メソッドで、xib を読み込み、サブビューを初期化します。これはうまくいきます。
今、同じカスタム ビューを別の場所で使用したいのですが、サブビューのレイアウトを変更したいと考えています。同じ Xib ファイルで 2 番目のカスタム ビュー レイアウトを作成し、どのビュー コントローラーにカスタム ビューが含まれているかに応じて正しいビュー レイアウトをロードしたいと考えています。すべてのサブビューとすべてのロジックが同じであるため、レイアウトが異なるだけで、次のようなものを探しています:
-(id)initWithCoder:(NSCoder *)aDecoder{
if (self = [super initWithCoder:aDecoder]) {
if (self.subviews.count == 0) {
UINib *nib = [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil];
UIView *subview;
if ([/*instantiating VC isKindOfClass:viewController1.class]*/) {
subview = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];
}
else if ([/*instantiating VC isKindOfClass:viewController2.class]*/) {
subview = [[nib instantiateWithOwner:self options:nil] objectAtIndex:1];
}
subview.frame = CGRectMake(0, 0, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame));
subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self addSubview: subview];
}
}
return self;
}
このカスタム ビューをインスタンス化しているビュー コントローラーに関する情報にアクセスする方法はありますか?