2013-08-31 19 views
1

我想在創建視圖0.5秒後顯示加載器。在init中初始化的屬性,在viewDidLoad中未更新

- (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]; 
    } 
} 

通常與viewDidLoadself.loaded = YES不應該顯示加載程序。但它仍然出現。 我是否應該將self.loaded = YES放入init,以免顯示?

編輯: 如果我初始化self.loadedviewDidLoad而不是「init」的,它不會顯示出來。但是爲什麼我不能在'init'方法中初始化'self.loaded',這樣loader就不會出現?

+0

什麼是'loader'?它看起來像一個UIView子類。爲什麼在將它作爲子視圖添加到主視圖後不顯示? –

+0

這是一個[MBProgressHUD](https://github.com/jdg/MBProgressHUD) – Sony

+0

但問題是'loaded'屬性在' - (void)showLoader'中沒有正確的值。 – Sony

回答

0

您的初始化更改從self.loaded_loaded

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

當您使用self,它調用viewDidLoad,因此它被完成之前初始化執行執行。

相關問題