最も簡単な解決策はMyView
、単一のサブビューを作成することです。これは、残りの子孫ビューのコンテナーです。MyVC.xib
これにより、 にあるものと にあるものとの間の単一の接点が得られMyView.xib
、両方の xib のアウトレットを接続できます。
でMyVC.xib
、各プレースホルダ ビューのクラスを に設定しMyView
ます。
でMyView.xib
、最上位ビューのクラスを に設定しUIView
ます。File's Owner のクラスを に設定しMyView
ます。MyView
で接続されていたコンセントが にあるMyView.xib
場合は、最上位ビューにそれらのコンセントがなくなっているため、それらをファイルの所有者に再接続する必要があります。
で、最上位ビューをサブビューとして-[MyView initWithCoder:]
ロードして追加します。MyView.xib
テストされていない例:
+ (UINib *)nib {
static dispatch_once_t once;
static UINib *nib;
dispatch_once(&once, ^{
nib = [UINib nibWithNibName:NSStringFromClass(self) bundle:[NSBundle bundleForClass:self]];
});
return nib;
}
- (id)initWithCoder:(NSCoder *)aDecoder {
if (self = [super initWithCoder:aDecoder]) {
NSArray *contents = [[self.class nib] instantiateWithOwner:self options:nil][0];
UIView *containerView = contents[0];
// Make sure the container view's size tracks my size.
containerView.frame = self.bounds;
containerView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
self.autoresizesSubviews = YES;
if ([self respondsToSelector:@selector(setTranslatesAutoresizingMaskIntoConstraints:)]) {
self.translatesAutoresizingMaskIntoConstraints = YES;
containerView.translatesAutoresizingMaskIntoConstraints = YES;
}
// If you're using autolayout in both xibs, you should probably create
// constraints between self and containerView here.
[self addSubview:containerView];
}
return self;
}
MyView
これには、のアウトレットを のモノと のモノにMyVC.xib
接続できるという効果がありMyView.xib
、 の他のオブジェクトのアウトレットとMyVC.xib
のMyView.xib
インスタンスに接続できますMyView
。MyVC.xib
ただし、他のオブジェクトのアウトレットを他のオブジェクトに、MyView.xib
またはその逆に接続することはできません。