手动加载nib文件时,不会调用init或initWithNibName

时间:2013-11-11 13:51:16

标签: objective-c nib uinib

我正在手动加载nib文件(用于UIView可重用性), 加载nib文件的代码

- (NSArray*)loadMyNibFile
{
    UINib *nib = [UINib nibWithNibName:@"customView" bundle:nil];
    NSArray *topLevelObjs =  [nib instantiateWithOwner:self options:nil];

    NSLog(@"objects: %@", topLevelObjs);

    return topLevelObjs;
}

加载nib名称后,我将其添加到UIScrollView

NSArray *array = [self loadMyNibFile];
CustomView *view = [array objectAtIndex:0];
CGRect frame = CGRectMake(0, 0, 320, 216);
frame.origin.x = self.scrollView.frame.size.width * 2;
frame.origin.y = 99;
[view setFrame:frame];
[self.scrollView addSubview:view];

问题不在于,当我以这种方式加载nib文件时,initinitWithNibName方法没有被调用, 怎么能解决这个问题?

提前谢谢你,

1 个答案:

答案 0 :(得分:2)

您应该覆盖[UIView initWithFrame:][UIView initWithCoder:]方法(请参阅UIView Class Reference)。

如果您始终从NIB加载视图而不是手动创建,则最好覆盖awakeFromNib(请参阅reference)。