如何在iOS中设置活动指示器视图

3
.h文件中:
UIActivityIndicatorView *mySpinner;

viewDidLoad 中:

mySpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
mySpinner.center = CGPointMake(160, 240);
mySpinner.hidesWhenStopped = YES;
[self.view addSubview:mySpinner];

最后,在按钮点击时我会调用它,代码如下:
[mySpinner startAnimating];

问题在于当我在viewDidLoad中调用它时,它显示并开始动画,但是在按钮单击时没有动画,甚至没有显示。请帮我解决这个问题。
提前感谢。

你能检查一下按钮点击函数是否被调用了吗?(例如,在按钮点击函数中添加NSLog(@"called button click!");,并检查控制台输出,看看当你点击按钮时是否会出现该消息。) - Guntis Treulands
是的按钮点击被完美地调用了...我在NSLog中检查过了。 - M Zubair Shamshad
@MichaelDautermann 是的,它停止了... - M Zubair Shamshad
@MichaelDautermann,它仍然给我之前的相同结果。 - M Zubair Shamshad
在按钮点击事件中,您可以尝试以下代码:[mySpinner stopAnimating]; 然后再执行 [mySpinner startAnimating];另外,您是否使用 ARC? - Guntis Treulands
显示剩余7条评论
2个回答

2
我猜想你的“mySpinner”实例变量没有被正确地保留或声明。
在你的.h文件中,将它声明为一个属性。如下所示:
@property (strong) UIActivityIndicatorView *mySpinner;

然后,当您创建它时:

self.mySpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

当你在按钮点击方法中引用它时:

[self.mySpinner startAnimating];

2
感谢所有帮助我的人…… 我解决了问题,并在此发布答案,为正在寻求帮助的人提供帮助……实际上问题出在“我正在同步请求中下载一些记录。因此,UI更新会被阻塞一段时间。”这里所创建的问题……
所以这里产生了问题……
点击按钮时,我只需创建一个调用方法“start”的新线程。
[NSThread detachNewThreadSelector: @selector(Start) toTarget:self withObject:nil];

“start”方法是

- (void) Start
{
Spinner.hidden = NO;
[mySpinner startAnimating];
}

我已经使用了您的解决方案,它也有效果,但我的问题是每当应用程序切换到后台,然后再回到前台时,活动指示器就会停止动画。你知道原因吗?而且同样的事情不会发生在我在viewDidLoad方法中开始activityIndicator时。 - Vinod Jadhav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接