3

我一直在尝试实现这一点很长时间,但我没有得到任何有利的结果。

假设我有一个执行 HTTP 请求的方法(特别是 twitter 更新),并说我想UIActivityIndicatorView在 HTTP 请求正在进行时显示一段时间(我知道它何时完成,因为有调用的委托方法当请求完成时,无论是正面结果还是负面结果)。

我已经看到很多答案说线程对于这个类的实现是必要的。起初我尝试startAnimating在不同的线程中调用该方法并stopAnimating直接调用该方法(不启动新线程)。之后我看到了这个人是怎么做的,我认为这更安全,因为我用两种不同的方法(推特更新的委托方法)启动和停止指标。

但是,这两种方法都没有给我想要的结果(活动指示器根本没有出现)。有什么我想念的吗?

提前谢谢您,如果我的问题太长,我深表歉意。
非常感激你的帮助。

4

3 回答 3

4

使用 UIKit 子类时绝对禁止使用线程。您可能已经看到 UIActivityIndi​​catorView 在内部使用线程的报告,但这绝不意味着您可以从多个线程访问对象。所有 UIView 子类(包括 UIActivityIndi​​catorView)只能从主线程访问。这包括调用-startAnimating-stopAnimating

如果您重写代码,以便您只访问主线程上的活动视图,并且它仍然无法正常工作,那么我猜该视图要么没有添加到可见视图,要么被另一个视图,或者具有将自身置于其父视图的可见区域之外的框架。

于 2011-02-22T04:55:17.040 回答
0

MBProgressHUD 它也很简单,并且在辅助线程开始/完成时显示和隐藏自己。像这样的东西:

[HUD showhileexecuting:"yourstuff" animated:YES]

“Yourstuff”将在单独的线程上运行。

您不应在辅助线程中执行 UI 活动。

于 2011-02-22T08:01:51.463 回答
0

您不能在辅助线程中执行 UI 内容。

您应该在辅助线程中执行 HTTP 请求,同时从主线程调用活动视图。

我推荐使用更容易使用的DSActivityView 。仅 1 行显示活动视图,1 行隐藏。

于 2011-02-22T07:11:20.210 回答