3

我有一个关于 UIActivityIndi​​cator 的问题。我[spinner startAnimating]在 IBAction 上申请了一个按钮,然后做了一些处理。进程后activityindicator应该停止然后导航到另一个视图。但是没有出现活动指示器。当我删除“[spinner stopAnimating]”行时,指示器会出现,但不会在按下按钮的瞬间出现。它出现在另一个视图加载之前,并且显然没有出现,我的意思是它没有出现,但如果我们仔细观察,它只会出现一瞬间。

提前感谢任何答案。

4

4 回答 4

11

Ole 非常正确,但是有一个技巧是您不介意同步处理(通常这就是您首先要显示活动指示器的原因)。

首先移动要处理的代码,而微调器由它自己的方法决定。然后做

[spinner startAnimating];
[self performSelector:@selector(methodname) withObject:nil afterDelay:0];

afterDelay:0 表示下一次通过运行循环。这样,微调器就开始了。

于 2010-05-27T09:40:07.360 回答
4

在您的代码将控制权返回给运行循环之前,动画不会开始。如果您的处理任务阻塞了主线程,则在完成之前不会进行任何 UI 更新。您应该异步进行处理(例如,通过启动NSOperation)。

于 2010-05-27T09:26:44.880 回答
4

你应该在执行选择器中运行。

例如:

[self performSelector:@selector(animation) withObject:nil afterDelay:0]

-(void)animation

{

NSAutoreleasepool *pool = [[NSAutorepleasepool alloc]init];

[indicatorView startAnimating];

[pool release];

}
于 2010-05-27T09:48:18.010 回答
0

这是一个老问题。我把我的答案留在这里,这样可能会帮助某人解决他们的问题。

于 2011-09-18T07:36:02.357 回答