活动指示器不立即开始动画
问题描述:
我初始化一个活动指示器,并在一个按钮按下动作,我开始动画并调用下一个视图来显示。活动指示器不立即开始动画
-(IBAction) downloadButtonPressed:(id)sender {
NSLog(@"Download Button Pressed");
indicator.hidden = NO;
[indicator startAnimating];
if (addviewcontroller == nil)
addviewcontroller = [[AddViewController alloc]init];
[self.view addSubview:addviewcontroller.view];
[addviewcontroller setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:addviewcontroller animated:YES];
}
当我按下按钮时,活动指示灯不会立即启动。它在另一个视图被调用时开始。指示器显示一秒钟,但按下按钮时,需要一些时间才能加载另一个视图。
我不知道为什么指标显示一秒没有开始。
答
试试这个:
-(IBAction) downloadButtonPressed:(id)sender
{
NSLog(@"Download Button Pressed");
indicator.hidden = NO;
[indicator startAnimating];
[self performSelector:@selector(showController) withObject:nil afterDelay:0.1f];
}
- (void)showController {
if (addviewcontroller == nil)
addviewcontroller = [[AddViewController alloc]init];
[self.view addSubview:addviewcontroller.view];
[addviewcontroller setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:addviewcontroller animated:YES];
}
这应该做的伎俩;-)
编辑
我只注意到有你的代码中的问题,要添加您的addviewcontroller
两次。一个通过将其添加为实际视图控制器的子视图,另一个通过模态呈现另一个视图控制器。你应该从这个函数中删除一个语句。
为什么添加两次addviewcontroller?你可以尝试用其他方法创建你的addviewcontroller。动作内部(downloadButtonPressed)简单显示指标。然后你可以执行一些延迟选择器(`performSelector:withObject:afterDelay:`)。在该选择器内部,您可以隐藏您的活动指示器并创建您的addviewcontroller。 – 2011-12-15 14:36:44
@Flex_Addicted它和你和niko说的一样。非常感谢...... – Bala 2011-12-15 14:48:49