繁体   English   中英

将视图控制器分配给自定义.xib

[英]Assign a view controller to a custom .xib

我有一个自定义可重用的XIB,它已创建并为它分配了UIView的类子类。

  • BannerView.xib(文件所有者设置适当
  • BannerView.h:UIView
  • BannerView.m

这是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而不是上面的内容添加为子视图。 考虑到目前的现有设置,我该如何处理。

您的init方法是initWithFrame,因此您必须创建BannerView

BannerView *bannerView = [[BannerView alloc]initWithFrame:frame];

然后你可以添加到ViewController

-(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并在initinitWithFrame:设置一些属性时,您已经获得了视图对象initWithFrame:

当你打电话时

self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] firstObject];

旧的视图对象消失了,因为您刚刚设置了一个来自xib的新视图对象

为什么不使用-[UIViewController initWithNibName:nibBundle:]您可以根据需要设置笔尖

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM