2011-06-12 71 views
1

我有一个刷新按钮,在我的导航栏视图点击

buttonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(buttonItemClicked)]; 
    self.navigationItem.rightBarButtonItem = buttonItem; 
-(void)buttonItemClicked{ 
    NSLog(@"buttonItemclicked"); 
    myView.labelName.text = nil; 
    myView.otherLabelName.text = nil; 
    [spinner startAnimating] 
    [spinnerView setHidden:NO]; 
    [self requestAPI]; 
    [spinner stopAnimating]; 
    [spinnerView setHidden:YES]; 
    } 

如果我去进出来看,它工作正常。但是,当我在buttonItemClicked中调用相同的方法时,它不起作用。我也尝试在我的操作方法中调用视图方法,但这也不起作用。

我试图做的是将我的标签设置为零,添加我的UIActivityIndicatorView并在标签重新设置后将其删除。

我已经尝试[self.view setNeedsDisplay];

刷新它自我工作,但动画不起作用。

有什么建议吗?

回答

0

动画不起作用,因为您使用相同的方法调用startAnimating和stopAnimating(和setHidden)。 渲染在方法调用结束时开始。 您需要设置

[spinner stopAnimating]; 
[spinnerView setHidden:YES]; 

requestAPI

编辑:

使用大中央调度。像:

- (void)buttonItemClicked { 
    myView.labelName.text = nil; 
    myView.otherLabelName.text = nil; 
    [spinner startAnimating] 
    [spinnerView setHidden:NO]; 
    [self requestAPI]; 
} 

- (void)requestAPI { 
    dispatch_async(dispatch_get_global_queue(0, 0), ^{ 
    NSURL *url = [NSURL URLWithString:@"http://example.com"]; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    NSString *stringResult = [[NSString alloc] initWithData:data 
                encoding:NSUTF8StringEncoding]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [spinner stopAnimating]; 
     [spinnerView setHidden:YES]; 

     myView.labelName.text = stringResult; 
    }); 

    }); 
} 
+0

@Sinetris如果将我的标签设置为零并开始动画,在我的动作方法中它可以正常工作,即动画。如果我调用requestAPI,则动画完成。不知道可能是什么原因造成的。 – Magnus 2011-06-12 15:15:46

+0

@MagnusAPI有什么要求吗?如果您从Web获取数据(或者您的方法运行几秒钟),则需要另一个线程(请参阅Grand Central Dispatch中的“简化”线程和ASIHTTPRequest以进行异步Web调用)。 – Sinetris 2011-06-12 15:31:36

+0

我从Web服务获取数据并将获得的响应放入UILabels中。但我不明白为什么它在我的视图方法中工作,而不是在我的UIBarButtonItem的操作方法中。 – Magnus 2011-06-12 15:39:21

0

尝试[myView setsNeedToDisplay];

+0

试过了,没有工作。 – Magnus 2011-06-12 14:39:03