带有nib作为子视图的自定义视图似乎没有加载

Ben*_*ins 3 iphone views objective-c interface-builder nib

我创建了一个自定义视图,从nib加载其内容,如下所示:

/* PricingDataView.h */

#import <UIKit/UIKIt.h>

@interface PricingDataView : UIView {
  UIView *contentView;
}
@property (nonatomic, retain) IBOutlet UIView *contentView;
@end

/* PricingDataView.m */

#import "PricingDataView.h"

@implementation PricingDataView
@synthesize contentView;

- (id)initWithFrame:(CGRect)frame {
  if ((self = [super initWithFrame:frame])) {
    [[NSBundle mainBundle] loadNibNamed:@"PricingDataView" owner:self options:nil];
    [contentView setFrame:frame];
    [self addSubview:contentView];
  }
  return self;
}

/* ... */
Run Code Online (Sandbox Code Playgroud)

在nib文件中,我设置PricingDataView为文件所有者的类型,并连接contentViewIB中的插座.我将UIView接口库中的常规放置到显示给用户的全尺寸视图,然后将其类名更改为PricingDataView.它全部构建,但在运行时,我的自定义视图应该是什么都没有呈现.

我把断点放进去PricingDataView.initWithFrame,但它们没有击中,所以我知道我错过了会导致视图被初始化的东西.我很好奇的是,在从nib加载我的其他视图的过程中,所有的初始化都发生在我身上,但不是这个.为什么?

yab*_*ada 10

你确定你的其他观点没有使用UIViewController吗?下面是从报价文件initWithFrame:来自UIView:

如果使用Interface Builder设计接口,则随后从nib文件加载视图对象时不会调用此方法.重构nib文件中的对象,然后使用其initWithCoder:方法进行初始化,该方法修改视图的属性以匹配存储在nib文件中的属性.有关如何从nib文件加载视图的详细信息,请参阅" 资源编程指南".