関連するXibファイルでカスタムUIViewサブクラスを用意しました。ストーリーボードでは、私はUIViewを配置し、私のカスタムサブクラスにそのクラスを設定します。カスタムビューのinitWithCoder:メソッドでは、xibをロードしてサブビューを初期化します。これは素晴らしいです。initWithCoder:カスタムビュー - インスタンス化されているビューコントローラを特定します
他の場所で同じカスタムビューを使用したいのですが、サブビューのレイアウトが異なるようにしたいと思います。私は同じ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;
}
がインスタンス化されたビューコントローラに関する情報にアクセスする方法はありますこのカスタムビュー?