如何在iOS上显示按钮操作的忙碌指示?

时间:2012-07-25 10:17:10

标签: iphone ios

我想在按钮操作上启动忙指示符,我在IB操作中使用以下代码:

 busyIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
 busyIndicator.center = self.view.center;
 [busyIndicator setColor:[UIColor redColor]];
 [self.btnInjuryPrevention addSubview:busyIndicator];
 [self.view addSubview:busyIndicator]; // spinner is not visible until started

[busyIndicator startAnimating];
if(![AppStatus isAppOnline]) {
    noInternetViewController = [[NoInternetViewController alloc] initWithNibName:@"NoInternetViewController" bundle:[NSBundle mainBundle]];
    noInternetViewController.view.tag = CHILD_CONTROLLER_TAG;
    [self.navigationController pushViewController:noInternetViewController animated:YES];
    NSLog(@"Yoy are offline..>!!");
}
else
{
    mInjuryPreventionViewController=[[InjuryPreventionViewController alloc] initWithNibName:@"InjuryPreventionViewController" bundle:nil withHeader:@" Injury Prevention" withId:INJURY_PREVENTION_ID];
    mInjuryPreventionViewController.view.tag = CHILD_CONTROLLER_TAG;
    [self.navigationController pushViewController:mInjuryPreventionViewController animated:YES];
    //[mInjuryPreventionViewController release];
}
// [self removeLoadingView];
[busyIndicator stopAnimating];

我使用上面的代码,但繁忙的指示灯无法启动,所以你能告诉我这是可能的吗?

3 个答案:

答案 0 :(得分:4)

如果您在一个区块中开始和停止动画,您将看不到任何内容。你可以认为startAnimating方法意味着“当控制返回操作系统时开始制作动画。”

目前尚不清楚为什么你需要一个旋转器。创建视图控制器需要很长时间吗?尽管如此,如果将视图控制器内容移动到新方法中,您可以执行以下操作:

...
// create busy indicator
[busyIndicator startAnimating];
[self performSelector:@selector(createViewController) withObject:nil afterDelay:0]; 

...

// at the end of the createViewController method...
[busyIndicator stopAnimating];

答案 1 :(得分:1)

正如我从你给定的代码中了解到的那样,你首先在一些UIViewController和你添加UIActivityIndi​​catorView的地方,然后你做了两个条件if-else你初始化另外两个UIViewController所以在这个视图中(在if-else之后生成)您将UIActivityIndi​​catorView添加为

时将如何显示
    [self.view addSubview:busyIndicator]; // spinner is not visible until started

请定义使用if语句执行的函数。?

保持编码

答案 2 :(得分:0)

当您在单个方法中启动和停止busuInde​​cator时,没有任何长时间处理,因此两个函数都在milisecons中执行,因此您无法在UI上看到busyIndecator。 在UI上显示busyIndecator或任何插座。 我应该有一段时间跨度是人类可识别的。 像:

[busyIndicator startAnimating];
//Do EXTREME PROCESSING!!!
[busyIndicator stopAnimating];