initWithFrame没有在UIVIew中执行

时间:2013-04-09 08:23:16

标签: ios objective-c

我制作了一个UIView子类&想要在initWithFrame:上执行方法,但是没有调用此方法。

当我从正在执行的initWithCoder:调用方法时,代码崩溃显示此错误:

  

由于未捕获的异常'NSGenericException'而终止应用程序,原因:'此编码器要求从初始化编码器方法返回替换的对象:'

我的代码是:

-(void)initialize
{
    //code
}

-(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self initialize];

        // Initialization code
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aCoder
{ 
    self = [super initWithCoder:aCoder];

    if(self)
    {
        [self initialize];
    }
    return self;
}

3 个答案:

答案 0 :(得分:6)

您没有从self方法返回initWithCoder:

答案 1 :(得分:5)

也许您在IB或storyBoard中指定此UIView,因此调用initWithCoder。 删除initWithCoder并使用awakeFromNib

    - (void)awakeFromNib{
    //custom init code
   [self initialize];
    }

答案 2 :(得分:0)

试试这个。

- (id)initWithCoder:(NSCoder *)aCoder
    { 
        self = [super initWithCoder:aCoder];

        if(self)
        {

        }
    return self;
    }