我的导航栏上有一个刷新按钮
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中调用相同的方法时,它不起作用。我也尝试在我的action方法中调用view方法,但这也不起作用。
我要做的是将我的标签设置为nil,添加UIActivityIndicatorView
并在再次设置标签后将其删除。
我已经尝试过[self.view setNeedsDisplay];
刷新它自己工作,但动画不起作用。
有什么建议吗?
答案 0 :(得分:0)
尝试[myView setsNeedToDisplay];
。
答案 1 :(得分:0)
动画无效,因为您在同一方法中调用startAnimating和stopAnimating(和setHidden)。 渲染从方法调用结束开始。 你需要设置
[spinner stopAnimating];
[spinnerView setHidden:YES];
requestAPI
中的。
修改强>
使用Grand Central Dispatch。像:
- (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;
});
});
}