如何继承具有 .xib 文件的自定义视图
Posted
技术标签:
【中文标题】如何继承具有 .xib 文件的自定义视图【英文标题】:How to inherit a custom view which has a .xib file 【发布时间】:2013-10-30 06:46:18 【问题描述】:有一个自定义视图,由类和 xib 文件组成。我用它作为
[[NSBundle mainBundle] loadNibNamed:@"myViewNib" owner:self options:nil];
问题是如何继承这个自定义视图。
我继承了myViewClass,但是我无法使用上面的代码创建实例。我认为我的方式错误。
【问题讨论】:
【参考方案1】:一种选择是不在 .xib 文件中创建 MYBaseView
本身,但它是子视图。
这样您就可以轻松继承MYBaseView
。
如果您以编程方式或在 Interface Builder 中创建视图对象,以下代码应该可以正常工作:
- (id)initWithCoder:(NSCoder *)aDecoder
self = [super initWithCoder:aDecoder];
if (self)
[self setUp];
return self;
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
[self setUp];
return self;
- (void)setUp
UIView *view = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] lastObject];
[self addSubview:view];
【讨论】:
如果这样,我可以将.xib中的视图链接到MYBaseView吗? 不,.xib 中的视图只是一个 UIView,您应该将 File Owner 链接到 MYBaseView。 酷。我迭代了笔尖的子视图并将它们全部添加为子视图。【参考方案2】:应该是:
myViewClass *newView = [[NSBundle mainBundle] loadNibNamed:@"myViewNib" owner:self options:nil];
【讨论】:
这是一个数组而不是一个视图。添加 lassObject 或 objectAtIndex:0以上是关于如何继承具有 .xib 文件的自定义视图的主要内容,如果未能解决你的问题,请参考以下文章
来自 XIB 的自定义 UIView 加载具有巨大规模的子视图
在具有动态高度的 IB uitableviewcell 中使用带有 XIB 的自定义视图