2011-11-25 42 views
0

我在我的应用程序中使用UIActivityIndi​​cator。我写的代码,如下所示:为什么UIIndicator不能移走?

-(void)startSpinner { 

    spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    spinner.hidden = NO; 
    spinner.frame = CGRectMake(137, 160, 50, 50); 
    [spinner setHidesWhenStopped:YES]; 
    [self.view addSubview:spinner]; 
    [self.view bringSubviewToFront:spinner]; 
    [spinner startAnimating]; 
} 

我呼吁的UIButton的动作事件

这种方法,并删除指示我写的代码如下:

-(void)stopSpinner { 

    [spinner stopAnimating]; 
    [spinner removeFromSuperview]; 
    [spinner release]; 
} 

上点击按钮指示器出现,但当我打电话 - (void)stopSpinner方法在视图 willAppear指示器不会失望。

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [self stopSpinner]; 

} 

即使我调试代码和我发现,控制也进入到stopSpinner();

我不明白是什么问题。

plz帮助...

+0

尝试在界面生成器中制作UIIndicator,看看你是否得到相同的情况。 –

+0

检查微调控制器的地址,当你启动它并停止时。我有一种感觉,当你停止它时,你的'stopSpinner'方法中的'spinner'变量为空。 –

+0

尝试添加一些延迟以停止微调 –

回答

3

你可能在startSpinner潜在的泄漏,因为你始终没有释放它创建UIActivityIndicatorView。改变你的方法是这样的:

-(void)startSpinner { 
    if (spinner){ 
     [spinner removeFromSuperview]; 
     [spinner release]; spinner = nil; 
    } 
    spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    spinner.frame = CGRectMake(137, 160, 50, 50); 
    [spinner setHidesWhenStopped:YES]; 
    [self.view addSubview:spinner]; 
    [spinner startAnimating]; 
} 

对于停止动画分配stopSpinner另一个UIButton的行动。 Cos viewWillAppear会在您点击任何按钮时触发。
ps。也许你的意思是viewWillDisappear

相关问题