我已经实现了一个UIActivityIndicator,它出现在我的程序的一部分而不是另一部分。当我正在加载表时,我有活动指示器,但是,我试图让它在用户单击按钮并等待表重新加载后再次开始动画。该表重新加载,但没有指标。这是代码。
- (void)viewWillAppear:(BOOL)animated {
CGRect frame = CGRectMake (120.0, 185.0, 80, 80);
activity = [[UIActivityIndicatorView alloc] initWithFrame: frame];
activity.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[activity startAnimating];
[navigationUpdateFromDetail.window addSubview: activity];
[super viewWillAppear:animated];
}
它出现在那一部分。但是,对于下一部分,它似乎不希望出现。
- (IBAction) btnGreaterTen_clicked :(id)sender {
self.searchDistance = [NSNumber numberWithDouble : 10];
CGRect frame = CGRectMake (120.0, 185.0, 80, 80);
activity = [[UIActivityIndicatorView alloc] initWithFrame: frame];
activity.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[navigationUpdateFromDetail.window addSubview: activity];
[activity startAnimating];
NSLog(@" search value after change %@", [searchDistance description]);
[self getSetDisplay];
[activity stopAnimating];
}
该按钮更改变量,并假设启动动画,但事实并非如此。我已经改变了颜色,以确保它不仅仅是混合,所以这不是解决方案。我试图重新创建相同的对象,但仍然没有运气。 提前谢谢。
答案 0 :(得分:2)
这不起作用,因为动画只会在主应用程序循环“运行”时显示。在您的代码中,您通过调用[self getSetDisplay]来阻止主线程。
您应该异步加载数据以使其工作(在后台线程中)。然后你可以调用 startAnimating ,启动你的线程,当线程结束时,停止动画。
答案 1 :(得分:1)
这一直困扰着我多年,我发现当使用搜索显示控制器时,我必须将活动指示器添加为搜索结果的子视图以使其显示。在我的viewDidLoad中,我把...
// create activity indicator
activityIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
[self.searchDisplayController.searchResultsTableView addSubview:activityIndicator];
当我想开始动画时,我把...
[activityIndicator setCenter:CGPointMake(self.searchDisplayController.searchResultsTableView.frame.size.width/2.0f, self.searchDisplayController.searchResultsTableView.frame.size.height/2.0f)];
[activityIndicator startAnimating];
希望这有助于某人。
答案 2 :(得分:-1)
尝试添加
activity.hidden = NO;
之前
[activity startAnimating];