触发网络的请求时用户的卷轴到底的时候
-
18-09-2019 - |
题
我试图获得一个UIActivityIndicatorView到"出现和动画",当用户的卷轴到底的时候....
在达到该表底部的查看网页的请求提出,将需要几秒钟的时间来完成,然后UIActivityIndicatorView应"停止和隐藏"
我触发的外观UIActivityIndicatorView使用,willDisplayCell:forRowAtIndexPath:
列项目
但问题是,UIActivityIndicatorView不会出现在iPhone上屏幕之后直到整个方法(即,willDisplayCell:forRowAtIndexPath:)是所谓,和通过那么它也已经隐藏。
任何想法要如何:
- 显示的指示图
- 使网络的要求
- 隐藏的指标的看法?
新的线?更好的办法?
谢谢!
具体地说,我的功能看起来像这样
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (self.results && indexPath.row == [self.results count] - 1) {
[self.loadingSignal setHidden:NO]; // <====== my UIActivityIndicatorView is called "loadingSignal"
[self.loadingSignal startAnimating];
/// make web request that will take a few seconds
[self.loadingSignal setHidden:YES];
[self.loadingSignal stopAnimating];
}
}
}
解决方案
好的。从你的上述段代码,我看到几个问题:
- 你似乎计划在等待完成请求之前,显示一个小区。这有几个缺点:它是令人讨厌的用户和将最有可能冻结UI,同时请求进行(可能需要几秒)。
- 一切都发生在
willDisplayCell
法。
这里就是我怎么觉得你应该解决这个问题:
- 必须将显示电池触发装 异步.
- 显示一个小说"Loading..."你的微调在它(见特威特2灵感)
- 等待回电从你的请求
- 填充你的型号的响应
- 删除"Loading..."细胞
- 强迫一个刷新的数据
[tableView reloadData]
这应该让你实现什么你想要做的。
其他提示
你可以试试这样做的 cellForRowAtIndexPath: 方法的时候
不隶属于 StackOverflow