У меня есть небольшая проблема, которая, кажется, преследует меня. Мой подкласс UITableViewController загружает данные асинхронно при выборе элемента TableViewCell. так...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"clickROW");
itemData *selectedItemData;;
selectedItemData = [[[DataManager sharedDataManger]getAllDataItems] objectAtIndex:indexPath.row];
[[DataManager sharedMischaManager] loadDataItemDetailsAsync:selectedItemData.Now];
Хорошо, пока все хорошо, loadDataItemDetailsAsync
публикует уведомление после завершения загрузки. Затем мой подкласс UITableViewController получает правильное уведомление, создает новое представление и помещает его в свой NavigationController.
пока все работает нормально...
но, поскольку асинхронная загрузка может занять некоторое время (в зависимости от текущей пропускной способности), я хочу, чтобы UIActivityIndicatior отображался/анимировался во время загрузки.
Итак, я сделал следующее (в моем подклассе UITableViewCell)
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
if(selected)
{
[self.contentView bringSubviewToFront:loader];
[tvImageView setHidden:YES];
[loader setHidden:NO];
[loader startAnimating];
//[loader performSelectorInBackground: @selector(startAnimating) withObject: nil];
}
else {
//[loader performSelectorInBackground: @selector(stopAnimating) withObject: nil];
[loader stopAnimating];
[loader setHidden:YES];
[tvImageView setHidden:NO];
}
}
я пробовал оба способа "запустить загрузчик", performSelectorInBackGround
и простой [loader startAnimating]
. ни один из них действительно не работает.
интересно, что tvImageView тоже не скрывается.
Думаю, я пропускаю базовый шаг (что-то вроде перерисовки/повторного отображения, я не знаю). Кажется, я просто не могу понять это сам :(
любая помощь, советы, подсказки очень ценятся
ваше здоровье
Сэм