【问题标题】:init or initWithNibName not getting called when loading nib file manually手动加载 nib 文件时未调用 init 或 initWithNibName
【发布时间】:2013-11-11 13:51:15
【问题描述】:

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

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

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

    return topLevelObjs;
}

加载笔尖名称后,我将其添加到 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 方法, 怎么解决?

提前谢谢你,

【问题讨论】:

    标签: objective-c nib uinib


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多