gpt4 book ai didi

ios - UIActivityIndi​​catorView 不显示

转载 作者:可可西里 更新时间:2023-11-01 05:03:19 25 4
gpt4 key购买 nike

我有一个带有 TableView Controller 的应用程序,用户在其中选择一个美国州,调用 Web 服务并在目标 TableView Controller 中显示该州的数据。由于 Web 服务可能需要一些时间才能完成,所以我需要一个事件指示器。由于不会有临时数据显示,我需要同步处理。所以我的任务很简单:启动事件指示器,调用网络服务,完成后,停止事件指示器。

我显然做错了什么,没有显示任何事件指示器。

这是来 self 的目标 TableView Controller 的 viewDidAppear 方法的代码:

-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[self.tableView bringSubviewToFront:spinner];
spinner.hidesWhenStopped = YES;
spinner.hidden = NO;
[spinner startAnimating];
stateGauges = [[GaugeList alloc] initWithStateIdentifier:stateIdentifier andType:nil];
[self.tableView reloadData];
[spinner stopAnimating];
}

标题:

@property (strong, nonatomic) UIActivityIndicatorView *spinner;

GaugeList 是进行网络服务调用的对象。

有人能告诉我如何显示事件指示器 View 吗?谢谢!

最佳答案

您忘记在表格 View 上添加微调器。您的代码应如下所示:

-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spiner.center = //set some center
[self.tableView addSubview: spinner];
[self.tableView bringSubviewToFront:spinner];
spinner.hidesWhenStopped = YES;
spinner.hidden = NO;
[spinner startAnimating];
stateGauges = [[GaugeList alloc] initWithStateIdentifier:stateIdentifier andType:nil];
[self.tableView reloadData];
[spinner stopAnimating];
}

您还可以在主线程中向 Web 服务发送请求。这是不好的做法。我建议如下:

-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spiner.center = //set some center
[self.tableView addSubview: spinner];
[self.tableView bringSubviewToFront:spinner];
spinner.hidesWhenStopped = YES;
spinner.hidden = NO;
[spinner startAnimating];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
stateGauges = [[GaugeList alloc] initWithStateIdentifier:stateIdentifier andType:nil];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
[spinner stopAnimating];
});
});
}

关于ios - UIActivityIndi​​catorView 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19549452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com