我有一个nib文件说TestView.xib。我添加了一些组件。
现在我创建了另一个nib文件AnotherTestView.xib
我想使用接口buidler将TestView.xib的视图添加到AnotherTestView.xib中,这样我就不需要再次从TestView添加相同的组件。它们就像我所有观点的基本组成部分一样。
有没有办法做到这一点。就像我们可以在IB中为UIView设置nib文件名。或者我们如何将具有nib文件的现有视图添加到另一个nib文件中。
答案 0 :(得分:0)
我在一篇冗长的博客文章中写了我们embed custom-view Nibs inside other Nibs的内容。紧要关键是在自定义视图中覆盖-awakeAfterUsingCoder:
,将从AnotherTextView.xib加载的对象替换为从“嵌入式”Nib(TestView.xib)加载的对象。
这些方面的东西:
// TestView.m
- (id) awakeAfterUsingCoder:(NSCoder*)aDecoder {
BOOL theThingThatGotLoadedWasJustAPlaceholder = ([[self subviews] count] == 0);
if (theThingThatGotLoadedWasJustAPlaceholder) {
// load the embedded view from its Nib
TestView* theRealThing = nil;
NSArray* elements = [[NSBundle mainBundle] loadNibNamed: NSStringFromClass([TestView class])
owner: nil
options: nil];
for (id anObject in elements) {
if ([anObject isKindOfClass:[TestView class]]) {
theRealThing = anObject;
break;
}
}
// pass properties through
theRealThing.frame = self.frame;
theRealThing.autoresizingMask = self.autoresizingMask;
[self release];
self = [theRealThing retain];
}
return self;
}