Я пытаюсь использовать MBProgressHUD, чтобы показать анимацию загрузки, пока я получаю доступ к информации, чтобы сгладить процесс перехода от списка UITableView к UIWebView, который содержит подробную информацию о выбранном элементе.Если я позвоню [self fetchPlayer];без использования MBProgressHUD у меня нет проблем, и все работает нормально, хотя без анимации.Но если я назову [selfloadAnimation];это половина работает.В первый раз, когда я выбираю что-то из UITableView, оно загружается правильно каждый раз, но если я вернусь и выберу тот же или другой элемент, я довольно часто получу нулевые значения для элементов playerDetails.Я не уверен, что метод MBProgressHUD мог сделать, чтобы вызвать это, но вот код.NSLog отображает правильную информацию, но основной класс, который вызывает два метода, не выводит ее правильно.
- (void)loadingAnimation {
// The hud will dispable all input on the view (use the higest view possible in the view hierarchy)
HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
// Add HUD to screen
[self.navigationController.view addSubview:HUD];
HUD.labelText = @"Loading";
// Show the HUD while the provided method executes in a new thread
[HUD showWhileExecuting:@selector(fetchPlayer) onTarget:self withObject:nil animated:YES];
}
- (void)fetchPlayer {
NSManagedObjectContext *pcontext = [[AppController sharedAppController] managedObjectContext];
NSFetchRequest *pfetch = [[NSFetchRequest alloc] init];
NSEntityDescription *pentity = [NSEntityDescription entityForName:@"Players"
inManagedObjectContext:pcontext];
[pfetch setEntity:pentity];
NSPredicate *ppredicate = [NSPredicate predicateWithFormat:@"playerID=%@", [playerNews playerID]];
[pfetch setPredicate:ppredicate];
NSError *perror;
NSArray *plist = [pcontext executeFetchRequest:pfetch error:&perror];
playerDetails = [plist objectAtIndex:0];
NSLog(@"%@ %@ %@ %@ %@", [playerNews playerID],
[playerDetails valueForKey:@"playerFirstName"],
[playerDetails valueForKey:@"playerLastName"],
[playerDetails valueForKey:@"position"],
[playerDetails valueForKey:@"dateOfBirth"]);
[pfetch release];
NSManagedObjectContext *context = [[AppController sharedAppController] managedObjectContext];
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Teams"
inManagedObjectContext:context];
[fetch setEntity:entity];
if (![playerDetails valueForKey:@"team"]) {
team = [playerDetail team];
} else {
team = [playerDetails valueForKey:@"team"];
}
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"team=%@", team];
[fetch setPredicate:predicate];
NSError *error;
NSArray *list = [context executeFetchRequest:fetch error:&error];
playerTeam = [list objectAtIndex:0];
[fetch release];
}