【问题标题】:Activity Indicator not showing up活动指示器未显示
【发布时间】:2012-01-25 20:57:25
【问题描述】:

我有两个关于活动指示器的问题: 1. UIViewController 上没有显示Activity Indicator

我在 .xib 文件中添加了活动指示器。在按钮单击它应该开始动画。并且当收到来自服务器的响应时,在转到下一页之前它应该停止动画。 我这样做如下:

activityIndicator.hidden = NO;

[activityIndicator performSelector:@selector(startAnimating) withObject:nil afterDelay:0.1];

[self.view bringSubviewToFront:activityIndicator];

....rest of code here....

activityIndicator.hidden = YES;

[activityIndicator stopAnimating];
  1. UITableView 上未显示活动指示器

对于表格视图,我采用相同的方式,但在 didselectrowatindexpath 上...

对于tableview,我也尝试将活动视图添加到单元格附件,但仍然没有显示

在这两种情况下,活动指示器都没有显示。

请帮忙

谢谢

【问题讨论】:

  • 所有这些代码都在一个方法中吗?这里的上下文是什么?

标签: iphone objective-c ios uiactivityindicatorview


【解决方案1】:

如果所有这些代码都在一个方法中或响应一个事件,那么在您返回事件循环之前,对视图的任何更改都不可见。您将 activityIndi​​cator.hidden 设置为 NO,然后在 UI 有机会刷新之前再次将其设置为 YES。

您显然在开始动画之前也停止了它。

您需要做的是使活动指示器在此处可见并开始其动画。然后调度要完成的工作(启动异步网络连接,或者将一些工作放入队列,或者任何你需要完成的工作)并从这个方法返回,以便 UI 可以刷新,可以绘制指示器,并且动画可以真正开始了。

然后稍后在某个时间工作完成后,您可以隐藏指示器并停止动画。但是您不能在事件循环的一圈内在主线程上完成所有这些操作。您的任何更改都将不可见,因为在执行此方法时,这里根本不会发生任何绘图(假设这是在主线程上)

我希望这是有道理的?

【讨论】:

    【解决方案2】:

    现在我将代码修改为:

    activityIndicator.hidden = NO;
    
    [activityIndicator startAnimating];
    
    [self performSelector:@selector(saveClicked) withObject:nil afterDelay:0.1];    
    
    [self.view bringSubviewToFront:activityIndicator];
    

    它成功了:)

    【讨论】:

      【解决方案3】:

      可能是,在 tableView 中,而不是 self.view ,它将是 self.navigationController.view ??

      【讨论】:

        猜你喜欢
        • 2019-02-04
        • 2016-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多