1

我想在创建视图后 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中的 with。viewDidLoad但它仍然出现。我应该把self.loaded = YES它放在init不显示的地方吗?

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

4

1 回答 1

0

将初始化程序从更改self.loaded_loaded

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

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

于 2013-12-15T13:04:04.427 回答