在init中初始化的属性,未在viewDidLoad中更新

时间:2013-08-31 22:35:37

标签: ios

我希望在创建视图后0.5秒后显示加载程序。

- (id)init
{
    self = [super init];
    if (self) {
        self.loaded = NO;
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.loader = [self newLoader];
    self.loaded = YES;
    self.loaderTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(showLoader) userInfo:nil repeats:NO];
    [self.view addSubview:self.loader];
}

- (void)showLoader
{
    if (self.loaded == NO) {
        [self.loader show:YES];
    }
}

通常在self.loaded = YES中使用viewDidLoad时,不应显示加载程序。但它仍然出现。 我应该将self.loaded = YES放在init中,以便它不显示吗?

编辑: 如果我在self.loaded而不是'init'中初始化viewDidLoad,则不会显示。但是为什么我不能在'init'方法中初始化'self.loaded'以便加载器不应该出现?

1 个答案:

答案 0 :(得分:0)

将初始值设定项从self.loaded更改为_loaded

- (id)init
{
    self = [super init];
    if (self) {
        _loaded = NO;
    }
    return self;
}

当您使用self时,它会调用viewDidLoad,因此它会在初始化程序执行完成之前执行。