作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经审查了很多关于这个问题的帖子,但都没有成功。我有两个 TableView Controller ,一个源和一个目标,都在导航 Controller 中。当用户点击源 TableView Controller 中的单元格时,将实例化一个对象,该对象进行 Web 服务调用,这可能需要几秒钟,具体取决于网络速度。调用此 Web 服务后,将执行 segue 并将导航从源移动到目标。我想要一个事件指示器来显示何时进行此 Web 服务调用。过去几天我尝试的任何事情都没有奏效,即使是在这个论坛上标记为成功的帖子也是如此。所以,一定有什么……这是我到目前为止的代码:
源 TableView Controller header :
@property (strong, nonatomic) UIActivityIndicatorView *activityIndicator;
源 TableView Controller 实现:
@synthesize activityIndicator;
-(void)loadView {
[super loadView];
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[self.view addSubview:self.activityIndicator];
self.activityIndicator.center = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height / 2);
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSString *stateAbbr;
if([segue.identifier isEqualToString:@"sgShowStateDetail"]){
DetailTableViewController *detailVC = [segue destinationViewController];
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
NSArray *tempArray = (NSArray*)[groupedStates objectAtIndex:path.section];
NSString *key = [tempArray objectAtIndex:path.row];
stateAbbr = [statesDict objectForKey:key];
[detailVC setStateIdentifier:stateAbbr];
// begin activity indicator here
[self.view bringSubviewToFront:activityIndicator];
[activityIndicator startAnimating];
gauges = [[GaugeList alloc] initWithStateIdentifier:stateAbbr andType:nil];
[activityIndicator stopAnimating];
[detailVC setStateGauges:gauges];
// end activity indicator here
}
}
GaugeList 是执行网络服务调用的对象。
除了从来没有事件指示器外,一切都按预期工作。没有错误。我究竟做错了什么?谢谢!
最佳答案
我认为您可能使用了错误的模式。对 Web 服务的调用必须在后台进行,而事件指示器必须在主线程上显示和隐藏。因此
__block NSArray *gauges;
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
gauges = [[GaugeList alloc] initWithStateIdentifier:stateAbbr andType:nil];
dispatch_async(dispatch_get_main_queue(), ^{
[activityIndicator stopAnimating];
[detailVC setStateGauges:gauges];
};
};
关于iphone - UIActivityIndicatorView 不呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19455437/
我是一名优秀的程序员,十分优秀!