2015-07-20 37 views
0

我想設置顯示和解除Singleton中HUD的方法。我用singleton寫這個方法:MBProgressHUD到Singleton

- (void)showHUD 
{ 
    activityHud = [[MBProgressHUD alloc] init]; 
    activityHud.delegate = self; 
} 

但是什麼也沒有發生。對於解僱,我不知道如何寫......任何答案都會非常有幫助。謝謝!

+0

這看起來不像是Singleton模式。 – Raptor

+0

因爲這只是單身人士的方法,所以在這裏用這種方法複製/粘貼整個單身人士模式是沒有必要的...... – Stefan

+0

您正在實例化一個對象並設置其委託屬性。顯示它的代碼在哪裏? –

回答

1

爲什麼不使用靜態方法?我使用它並將其放入我的util類中。

static UIWindow *window; 
+ (MBProgressHUD *)showGlobalProgressHUDWithTitle:(NSString *)title { 
window = [[[UIApplication sharedApplication] windows] lastObject]; 
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:window animated:YES]; 
hud.labelText = title; 

return hud; 

}

,並隱藏與此:

+ (void)dismissGlobalHUD { 

[MBProgressHUD hideHUDForView:window animated:YES]; 
} 
1

你可以做我想做的。我有一個基地VC類,我所有的viewControllers從子類,並制訂的這些方法:

-(void)showActivityViewForView:(UIView *)view withActivityText:(NSString *)text; 

-(void)hideActivityView; 

實現爲這樣:

-(void)showActivityViewForView:(UIView *)view withActivityText:(NSString *)text; 
{ 
    self.viewForActivity = view; 
    self.activitytext = text; 
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(showActivityView) userInfo:nil repeats:NO]; 
} 


-(void)showActivityView 
{ 
    self.progressView = [MBProgressHUD showHUDAddedTo:self.viewForActivity animated:YES]; 
    self.progressView.opacity = 0.5; 
    self.progressView.labelText = self.activitytext; 
} 

-(void)hideActivityView 
{ 
    [self.timer invalidate]; 
    [MBProgressHUD hideAllHUDsForView:self.view animated:YES]; 
} 

計時器有這麼如果我所做的網絡活動需要不到一秒的時間才能完成,我根本不會顯示MBProgressHUD

讓它在基類中意味着我所有的VC都可以輕鬆訪問這些方法。