IBOutlet在drawRect方法中为零

时间:2014-01-31 13:41:16

标签: ios uiview drawrect null iboutlet

我有一个带有xib的UIView子类,名为RoundedImageView,它只实现了drawRect方法。 xib包含一个带有插座的AsyncImageView(它是UIImageView的子类)。此RoundedImageView是自定义表格视图单元格的一部分。在此单元格的awakeFromNib方法中,RoundedImageView不是零,但它的AsyncImageView出口是零。为什么会发生这种情况?如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

在与OP讨论聊天后,问题原来是表格单元格/ RoundedImageView位于一个笔尖中,而RoundedImageView位于AsycImageView位于另一个笔尖中。解决方案是从单元格中删除RoundedImageView,并将其nib加载到单元格的awakeFromNib方法中:

@implementation InviteFriendsImageVIew

- (void)awakeFromNib
{
    UINib *imageViewNib = [UINib nibWithName:@"RoundedImageView" bundle:nil];
    RoundedImageView *imageView = [imageViewNib instantiateWithOwner:nil options:nil][0];
    imageView.frame = // set frame here
    [self addSubView:imageView];
    self.roundedImageView = imageView;
}

答案 1 :(得分:0)

您正在某处创建视图实例,可能包含:

RoundedImageView *v = [[RoundedImageView alloc] initWithFrame:...];

这不使用NIB文件。您需要使用以下命令加载NIB:

UINib *nib = [UINib nibWithNibName:... bundle:nil];
NSArray *views = [nib instantiateWithOwner:... options:nil];

然后您可以将RoundedImageView的实例作为:

RoundedImageView *v = views[0];