我有一个继承自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连接等),我错过了什么,我做得不正确?谢谢。
要让你的界面出现,你需要从你的父视图控制器显式实例化一个AnalyticsDetailView。
在viewDidLoad:
或viewWillAppear:
方法中,添加一行:
AnalyticsDetailView * newView = [[AnalyticsDetailView alloc] initWithFrame: CGRectMake(x,y,height,width)];
[parentView addSubview: newView];
[newView release]; // subview retains for us