2012-11-07 52 views
0

我想点击一个UIButton时添加activityindicator并继续制作动画,直到从服务URL loads.If它加载然后将其移动到下一个view.But我为无法做这样的数据..activityindicator不工作在iPhone的UIButton点击?

这里是我的代码..

-(IBAction)switchtoGetProviders 
    { 
     UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(225, 115, 30, 30)]; 
     [activity setBackgroundColor:[UIColor clearColor]]; 
     [activity setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray]; 
     [self.view addSubview:activity]; 
     [activity release]; 
     [activity startAnimating]; 

     NSURL *urlString= [NSString stringWithFormat:@"http://www.something.net/service.svc/Xml"]; 

     if(arr.count>0) 
     { 
      [activity stopAnimating]; 
      ViewController2 *gp=[ViewController2 alloc]; 
      [self presentModalViewController:gp animated:NO]; 
      [gp release]; 
     } 
else 
{ 
UIAlertView *alert = [[[UIAlertView alloc]initWithTitle: @"Results not found" 
                    message: @"" 
                   delegate: self 
                 cancelButtonTitle:@"OK" 
                 otherButtonTitles:nil]autorelease]; 


        [alert show];   
     } 
    } 

其实这里当ARR为空,我会得到一个alertView。当alertView出现然后activityindicator开始。当我点击确定按钮alertView然后它停止动画。但我希望它立即开始当UIbutton被触动..我该怎么做? 我哪里错了?

回答

1

不停止动画之前释放它..如果你松开,然后你就失去了它的参考..

[activity release];//Dont Release here 
[activity startAnimating]; 



    [activity stopAnimating]; 
[activity release]; 
+0

我做到了,但仍然没有运气 – 07405

+0

请打电话给网络服务或任何你在使用一段时间后使用。我100%确定这个问题是因为计时器。 – Developer

0

有你的代码多个问题。

首先是发布,这是早期,第二你不给UI任何时间添加UIActivityIndicatorView并让它开始动画。您还忘记了您分配的initViewController2

我还猜测你没有发布你的所有代码,因为NSURL *urlString= [NSString stringWithFormat:@"http://....不会创建有效的NSURL对象。我也是missong,你从中得到arr变量。

如果你真的想在一个方法中做到这一点,你必须使用GCD。

-(IBAction)switchtoGetProviders 
{ 
    UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(225, 115, 30, 30)]; 
    [activity setBackgroundColor:[UIColor clearColor]]; 
    [activity setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray]; 
    [self.view addSubview:activity]; 
    [activity startAnimating]; 

    int64_t delayInSeconds = 0.1; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 

     NSURL *urlString= [NSString stringWithFormat:@"http://www.something.net/service.svc/Xml"]; 

     if(arr.count>0) { 
      [activity stopAnimating]; 
      [activity removeFromSuperview]; 
      [activity release]; 
      ViewController2 *gp= [[ViewController2 alloc] init]; 
      [self presentModalViewController:gp animated:NO]; 
      [gp release]; 
     } else { 
      UIAlertView *alert = [[[UIAlertView alloc]initWithTitle: @"Results not found" message: @"" delegate: self cancelButtonTitle:@"OK" otherButtonTitles:nil]autorelease]; 
      [alert show]; 
      [alert release]; 
    }); 
} 
+0

仍然我不明白它,当alertView出现时我得到它。当我点击确定按钮时它被解雇了......我该怎么办? – 07405