2014-01-16 3 views
0

В этом проекте я использую MBProgressHUD, когда получаю содержимое JSON с сервера. В первый раз, когда я запускаю свое приложение, анимация из моего MenuViewController на мою страницу отлично работает. Но когда я снова вернусь в свое Меню и на страницу, анимация переключателя viewcontroller не отображается. Метод Это происходит только тогда, когда я добавить функциональность MBProgressHUD ..MBProgressHUD UIViewController анимация несовместима

Моя страница ViewDidLoad:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    [self performSelectorInBackground:@selector(loadPage) withObject:nil]; 
} 

Метод loadPage, упрощена:

-(void) loadPage { 
    //loading functionality, deleted for now. 


    dispatch_async(dispatch_get_main_queue(), ^{ 

     [_lblTitle setText: [postsArray[0] objectForKey:@"title"]]; 
     [_webview loadHTMLString:[postsArray[0] objectForKey:@"content"] baseURL:nil]; 
     [HUD hide:YES]; 
    }); 

} 

Так что, когда я удалить 2-й и 3rth линии в viewDidLoad и HUD hide анимация работает отлично каждый раз. Что я делаю неправильно?

ответ

2

Заменить

HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    [self performSelectorInBackground:@selector(loadPage) withObject:nil]; 

с

MBProgressHUD *searchHUD = [[MBProgressHUD alloc] initWithView:self.view]; 
     searchHUD.dimBackground=YES; 
     searchHUD.animationType = MBProgressHUDAnimationZoom; 
     [self.view addSubview:searchHUD]; 
     [searchHUD showWhileExecuting:@selector(loadPage) onTarget:self withObject:Nil animated:YES]; 

Причиной: MBProgressHud предоставляет эту функциональность для выполнения какого-либо метода в фоновом потоке ..

+0

Это похоже на работу! Я пробовал это раньше, но мой ярлык названия не был заполнен по какой-то причине, и кнопка назад (не показана в моем примере кода) также не была показана. Но теперь это работает. Благодаря! – harmjanr

+0

всегда приветствуется :) – Ashutosh

2

Попробуйте в вашем -(void)viewDidLoad

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    HUD = [[MBProgressHUD alloc] initWithView:self.view]; 
    [self.view addSubview:HUD]; 
    HUD.delegate = self; 

    [HUD show:YES]; 

    [self performSelectorInBackground:@selector(loadPage) withObject:nil]; 
} 
+0

Я пробовал это (и добавил MBProgressHUDDelegate в мой .h-файл), но до сих пор нет анимации .. – harmjanr

0
//MBProgressHUD provides an easy way to execute code in background you don't need to create separate method for each task you wish to execute with HUD 

MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view]; 
[self.view addSubview:hud]; 

[hud showAnimated:YES whileExecutingBlock:^{ 
    //Write the code you wish to execute with an indicator 
    // e.g. write the code to call web-service 

// Last but not the least if you are doing any UI related task then use 

    // Write UI related code to be executed on main queue 
//e.g. if you are using UITableView to show retrieved data from server 
dispatch_async(dispatch_get_main_queue(), ^{ 
[self.tableView reloadData]; 

}); 


} completionBlock:^{ 
    [hud removeFromSuperview]; 
}]; 
Смежные вопросы