我有一个继承自UIView的类,这个类有我在IB中放置的一些控件。
然后,在我的主视图控制器的NIB文件中,我放置了一个视图,并将类更改为我的子类,并为子类创建了一个插座。但是,当我运行我的应用程序时,应用程序不显示我放在子类上的UI,它只是空白。
我在子类中获取initWithCoder和awakeFromNib消息,这是子类.m文件的基本外观:
#import "AnalyticsDetailView.h"
@implementation AnalyticsDetailView
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
return self;
}
- (void)awakeFromNib
{
[super awakeFromNib];
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
NSArray *v = [[NSBundle mainBundle] loadNibNamed:@"AnalyticsDetailView" owner:self options:nil];
[self addSubview:[v objectAtIndex:0]];
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
@end
我不确定initWithFrame是否正确,但由于该方法没有触发,我怀疑此时无关紧要。如果我看到子类方法触发后在我的应用程序中放置断点,我可以查看插座子类,框架与我在IB中创建的框架相同。
任何人都有任何建议(缺少代码,错误的IB连接等)关于我错过或做错了什么的寻找?感谢。
答案 0 :(得分:1)
要显示界面,您需要从父视图控制器显式实例化AnalyticsDetailView。
因此,在某些地方,例如viewDidLoad:
或viewWillAppear:
方法,您将添加一行说明:
AnalyticsDetailView * newView = [[AnalyticsDetailView alloc] initWithFrame: CGRectMake(x,y,height,width)];
[parentView addSubview: newView];
[newView release]; // subview retains for us