我有一个在UITableViewCell中选择行时可能需要一两秒的操作。我想在用户选择我正在做某事的单元格时给予用户反馈。目前它只显示tableviewcell的亮点。我在我的视图中添加了一个UIActivityIndicatorView。我默认隐藏它。我尝试在didSelectRowAtIndexPath中执行此操作:
{
CustomCell *cell = (CustomCell *)[tableView cellForRowAtIndexPath:indexPath];
cell.activityIndicator.hidden = NO;
[cell.activityIndicator startAnimating];
// do long task
[cell.activityIndicator stopAnimating];
cell.activityIndicator.hidden = YES;
}
此代码不显示我的activityindicator。如果我删除了
activityIndicator.hidden = YES;
中的
setCustomObject:(id)newObject
我的CustomCell类的,我确实看到了指标。虽然这只是静态的。我想隐藏它,直到他们点击单元格,在长任务运行时动画,然后在长任务结束时停止动画并再次隐藏。有什么想法吗?谢谢!
答案 0 :(得分:2)
尝试更新主线程中的活动指示器
dispatch_async(dispatch_get_main_queue(), ^{
cell.activityIndicator.hidden = NO;
[cell.activityIndicator startAnimating];
});
//do long task
dispatch_async(dispatch_get_main_queue(), ^{
cell.activityIndicator.hidden = YES;
[cell.activityIndicator stopAnimating];
});
答案 1 :(得分:0)
在setCustomObject:(id)newObject方法中,而不是将其设置为隐藏,试试这个:
activityIndicator.hidesWhenStopped = YES;
[acitivtyIndicator stopAnimating];
然后在didSelectRowAtIndexPath方法中,删除设置“隐藏”或不设置的代码,只需使用[activityIndicator startAnimating]或[activityIndicator stopAnimating]来控制动画及其是否隐藏。