我有一个我自己创建的自定义可重用XIB,并从UIView为它分配了一个类子类。
这是initWithFrame:
-(instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(self) {
self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] firstObject];
}
return self;
}
一切正常,我可以初始化这个自定义.xib并将其添加到我的VC:
BannerView *bannerView = [[BannerView alloc]init];
[_profileContentArea addSubview:bannerView];
虽然,我希望这个自定义.xib拥有它自己的VC,然后能够通过VC而不是上面的方式添加为子视图。考虑到我现有的设置,我将如何解决这个问题。
答案 0 :(得分:0)
您的init方法是initWithFrame,因此您必须创建类似
的BannerViewBannerView *bannerView = [[BannerView alloc]initWithFrame:frame];
然后你可以添加到ViewController
答案 1 :(得分:0)
-(instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(self) {
self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] firstObject];
}
return self;
}
请注意初始化步骤
+alloc
:分配内存
-init
:初始化必要的属性
当您致电alloc
并在init
或initWithFrame:
当你打电话
self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] firstObject];
旧的视图对象已经消失,因为您刚刚设置了一个来自xib的新视图
你为什么不使用 - [UIViewController initWithNibName:nibBundle:]你可以随意设置nib