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内にviewDidLoadは表示されないはずです。しかし、それはまだ表示されます。self.loaded = YES表示されinitないように入れるべきですか?

編集: 「init」ではなく初期化すると、表示されませんself.loadedviewDidLoadしかし、ローダーが表示されないように「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 に答える