在Init上隐藏UILabel

时间:2011-11-09 21:07:24

标签: ios cocoa-touch uilabel

我遇到了这个基本代码的问题:

-(id)init{
self = [super init];
if(self){
    self.mensaje = [[UILabel alloc]initWithFrame:CGRectMake(100.0, 100.0, 100.0, 100.0)];
    [self.mensaje setText:@"He vuelto"];

    [self.view addSubview:self.mensaje];
    [self.mensaje setHidden:YES];
}
return self;
}

除了[self.mensaje setHidden:YES];之外,所有代码都可以正常工作。标签始终显示在开始处。

我希望可以帮助我,这是基本的,但是必要!!

祝你好运!

1 个答案:

答案 0 :(得分:4)

此代码位于错误的位置。您不应该在视图控制器的初始化程序中创建和使用视图(假设上面的代码在视图控制器类中)。

相反,请执行以下操作:

- (id)init
{
    self = [super init];
    if (self) {
        // init any state other than views
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.mensaje = [[UILabel alloc] initWithFrame:CGRectMake(100.0, 100.0, 100.0, 100.0)];
    [self.mensaje setText:@"He vuelto"];
    [self.view addSubview:self.mensaje];
    [self.mensaje setHidden:YES];
}

这也假设您正在使用ARC。如果没有,您需要添加autorelease,如下所示:

    self.mensaje = [[[UILabel alloc] initWithFrame:CGRectMake(100.0, 100.0, 100.0, 100.0)] autorelease];