我有两个活动指标问题: 1.活动指示器未显示在UIViewController上
我在.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];
对于表视图,我这样做但是在didselectrowatindexpath ...
对于tableview,我也尝试将活动视图添加到单元附件,但仍未显示
在这两种情况下,活动指标都没有出现。
请帮忙
由于
答案 0 :(得分:11)
如果所有这些代码都在一个方法中或者响应一个事件,那么在返回事件循环之前,对视图的任何更改都不可见。您将activityIndicator.hidden设置为NO,然后再次将其设置为YES,然后UI才有机会刷新。
在启动动画之前,您显然也会停止动画。
您需要做的是在此处显示活动指示器并开始动画。然后安排要完成的工作(启动异步网络连接,或者将一些工作放入队列,或者你需要完成的任何工作)并从这个方法返回,以便UI可以刷新,可以绘制指标,并且动画实际上可以开始。
然后稍后 工作完成后,您可以隐藏指示符并停止动画。但是你不能在事件循环的一个回合中在主线程上做所有这些。您的所有更改都不可见,因为在执行此方法时,此处根本不会出现任何绘图(假设这是在主线程上)
我希望这有道理吗?
答案 1 :(得分:2)
现在我将代码修改为:
activityIndicator.hidden = NO;
[activityIndicator startAnimating];
[self performSelector:@selector(saveClicked) withObject:nil afterDelay:0.1];
[self.view bringSubviewToFront:activityIndicator];
它有效:)
答案 2 :(得分:1)
可能是,在tableView中,而不是self.view
,它将是self.navigationController.view
??