У меня есть UITableView с несколькими записями. После выбора мне нужно, чтобы он выполнял сетевую работу, требующую много времени. Чтобы дать пользователю некоторую обратную связь, я попытался поместить UIActivityIndicatorView в UITableViewCell. Однако, блесна появляется не намного позже - после того, как я проделал дорогую операцию! Что я делаю не так?
- (NSIndexPath *) tableView:(UITableView *) tableView
willSelectRowAtIndexPath:(NSIndexPath *) indexPath {
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[spinner autorelease];
[spinner startAnimating];
[[tableView cellForRowAtIndexPath:indexPath] setAccessoryView:activity];
if ([self lengthyNetworkRequest] == nil) {
// ...
return nil;
}
return indexPath;
}
Как вы можете видеть, у меня есть спиннер, установленный на accessoryView до длительной работы в сети. Но он появляется только после завершения метода tableView:willSelectRowAtIndexPath:
.