UITableViewCell中的UIActivityIndi​​catorView,未在选择中显示

时间:2012-05-03 00:01:19

标签: iphone uitableview uiactivityindicatorview

我有一个在UITableViewCell中选择行时可能需要一两秒的操作。我想在用户选择我正在做某事的单元格时给予用户反馈。目前它只显示tableviewcell的亮点。我在我的视图中添加了一个UIActivityIndi​​catorView。我默认隐藏它。我尝试在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类的

,我确实看到了指标。虽然这只是静态的。我想隐藏它,直到他们点击单元格,在长任务运行时动画,然后在长任务结束时停止动画并再次隐藏。有什么想法吗?谢谢!

2 个答案:

答案 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方法中,删除设置“隐藏”或不设置的代码,只需使用[activityIndi​​cator startAnimating]或[activityIndi​​cator stopAnimating]来控制动画及其是否隐藏。