带有NIB文件的iOS UIView子类不显示在IB中设计的UI



我有一个继承自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

最新更新