1
我準備了一個具有關聯的Xib文件的自定義UIView子類。在故事板上,我放置一個UIView並將其設置爲我的自定義子類。在自定義視圖的initWithCoder:方法中,我加載xib並初始化子視圖。這很好。initWithCoder:自定義視圖 - 確定正在實例化的視圖控制器
現在我想在其他地方使用相同的自定義視圖,但我希望我的子視圖的佈局不同。我想在同一個Xib文件中創建第二個自定義視圖佈局,並根據哪個視圖控制器包含自定義視圖來加載正確的視圖佈局。因爲我所有的子視圖和所有的邏輯都是一樣的,只是佈局是不同的,我正在尋找這樣的事情:
-(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;
}
有什麼辦法來訪問有關被實例化視圖控制器信息這個自定義視圖?