活动指示器不立即开始动画

问题描述:

我初始化一个活动指示器,并在一个按钮按下动作,我开始动画并调用下一个视图来显示。活动指示器不立即开始动画

-(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]; 

} 

当我按下按钮时,活动指示灯不会立即启动。它在另一个视图被调用时开始。指示器显示一秒钟,但按下按钮时,需要一些时间才能加载另一个视图。

我不知道为什么指标显示一秒没有开始。

+1

为什么添加两次addviewcontroller?你可以尝试用其他方法创建你的addviewcontroller。动作内部(downloadButtonPressed)简单显示指标。然后你可以执行一些延迟选择器(`performSelector:withObject:afterDelay:`)。在该选择器内部,您可以隐藏您的活动指示器并创建您的addviewcontroller。 – 2011-12-15 14:36:44

+0

@Flex_Addicted它和你和niko说的一样。非常感谢...... – Bala 2011-12-15 14:48:49

试试这个:

-(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两次。一个通过将其添加为实际视图控制器的子视图,另一个通过模态呈现另一个视图控制器。你应该从这个函数中删除一个语句。