0

我使用 xib 文件创建了一个名为 BOHeaderView 的自定义 UIView。我希望将此 BOHeaderView 加载到其他 UIViewController 的 xib 中。

我尝试在一个 ViewController nib 文件中添加 UIView 并将其类型更改为 customView。但我无法加载自定义视图。下面是customView的初始化代码。

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) 
    {
        // Custom initialization
        [[NSBundle mainBundle] loadNibNamed:@"BOHeaderView" owner:self options:nil];
    }
    return self;
}

- (void) awakeFromNib
{
    [super awakeFromNib];

    // commenters report the next line causes infinite recursion, so removing it
    [self customizeHeadView];
}
4

2 回答 2

0

带有 的那一行NSBundle应该在您要加载笔尖的类中。你应该在那堂课上写:

CustomView *customView = [[NSBundle mainBundle] loadNibNamed:@"BOHeaderView" owner:self options:nil].lastObject;

它返回一个NSArray,这就是为什么你需要lastObjct

于 2013-01-02T12:58:05.943 回答
0

你可以这样做:

NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"BOHeaderView" 
                                              owner:[[BOHeaderView alloc] init]
                                            options:nil];
BOHeaderView *infoView = [nibViews objectAtIndex:0];
infoView.frame = CGRectMake( put your rect here );
[self addSubview:infoView];

编辑

意味着您想说:使用来自多个视图控制器的自定义 UIView

我有同样的问题,我以这种方式解决了它:

我在buttonClick.

 RatingView *rateView = [[RatingView alloc] initWithNibName:@"RatingView" bundle:[NSBundle mainBundle]];
 rateView.view.frame = CGRectMake(0,45,1024, 648);
 [self.view addSubview:rateView.view];

快乐编码!

于 2013-01-02T13:00:43.633 回答