UIActivityIndicator в tableviewcell Показывает поздно При загрузке подробного просмотра? - PullRequest
0 голосов
/ 24 ноября 2011

У меня есть tableview с ответом detialview. В detailview у меня есть несколько изображений и ярлыков, которые загружаются с URL. Я пытаюсь добавить UIActivityindicatorview в ячейку, чтобы показать, что загружается. Я справился с этим, но он появляется до поздна и не исчезает, когда я возвращаюсь к tableview. Я обыскал все, чтобы найти простое решение, но не смог ...

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {

ReaDetailViewController *reaDetail = [[ReaDetailViewController alloc] initWithNibName:@"ReaDetailViewController" bundle:nil];

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

UIActivityIndicatorView *activityView = 
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[activityView startAnimating];
[cell setAccessoryView:activityView];
[activityView release];

[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];

    { 
    reaDetail.petImageString = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"image"]]; 

    reaDetail.petLabelString = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"description"]]; 

    reaDetail.petLabelString1 = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"description1"]]; 

    reaDetail.petLabelString2 = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"description2"]]; 





    reaDetail.title = [[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"name"]; 
}


// Pass the selected object to the new view controller.
[self.navigationController pushViewController:reaDetail animated:YES];
[reaDetail release];


   }

Любая помощь очень полезна!

1 Ответ

0 голосов
/ 24 ноября 2011

Я понимаю, что вы хотите, чтобы вид деятельности был анимированным во время загрузки контроллера вида. Проблема в том, что представление активности не начнет анимироваться, пока вы не вернетесь из этого метода выбора ... примерно в то время, когда ваш контроллер готов к нажатию.

2 варианта затем:

  • Вы можете выйти из метода как можно скорее, вызвав perfomSelector:onMainThread, чтобы выполнить шаги инициализации контроллера представления, который нужно нажать
  • Или, что еще лучше, нажмите контроллер представления как можно скорее и выполните процесс init в методах viewDidLoad или viewWillAppear этого контроллера (вы можете добавить контроллер активности в этом новом представлении).

Если вы выберете 1-ую опцию, вы должны вызывать метод deselectRowAtIndexPath после того, как вы нажмете новый контроллер представления, и вызвать stopAnimating в представлении индикатора из этого deselectRowAtIndexPath метода.

...