Ios 如果出现tableview单元格数据,如何隐藏加载程序?
我将CircularSpinner加载程序应用于我的tableview列表。如果单元格已加载,如何隐藏加载程序?现在,每次访问都会显示加载程序 示例代码如下:-Ios 如果出现tableview单元格数据,如何隐藏加载程序?,ios,objective-c,uitableview,loader,Ios,Objective C,Uitableview,Loader,我将CircularSpinner加载程序应用于我的tableview列表。如果单元格已加载,如何隐藏加载程序?现在,每次访问都会显示加载程序 示例代码如下:- - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [CircularSpinner show:@"Loading" animated: TRUE type:CircularSpinnerTypeDeterminate showDi
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[CircularSpinner show:@"Loading" animated: TRUE type:CircularSpinnerTypeDeterminate showDismissButton:[NSNumber numberWithBool:TRUE] delegate:self];
[CircularSpinner setValue:0.4 animated: TRUE];
}
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
[CircularSpinner setValue:1.0 animated: TRUE];
}
}
编辑:-
这是我调用的API函数,setUpData将在ViewDidLoad中调用
-(void)setUpData{
[self.manager GET:@"http://api.XXX.com/api/announcement" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
_serverDataArr = responseObject;
self.dataArr=[NSMutableArray array];
for (NSDictionary *subDic in self.serverDataArr) {
Announcement_Model *model=[[Announcement_Model alloc]initWithDic:subDic];
[self.dataArr addObject:model];
}
_rowArr=[Events_DataHelper getFriendListDataBy:self.dataArr];
_sectionArr=[Events_DataHelper getFriendListSectionBy:[_rowArr mutableCopy]];
[self.tableView reloadData];
} failure:^(NSURLSessionTask *operation, NSError *error) {
// [CircularSpinner setValue:1.0 animated: TRUE];
UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Please try again"
message:[error localizedDescription]
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok"
style:UIAlertActionStyleCancel
handler:nil];
[alertVC addAction:okAction];
[self presentViewController:alertVC animated:YES completion:nil];
}];
}
您可以通过实现
completionHandler
来实现它
例如:
func fetchApi(completion: (Bool)->()) {
// Getting the data request......
completion(true)
}
按如下方式调用函数:-
fetchApi(completed: Bool) {
if completed {
// Hide your spinner
}
}
我相信在ObjC中也可以这样做。希望这会有所帮助。添加我在下面代码中标记的
CircularSpinner.hide()
hoppingself.manager
调用API函数并在此处的闭包中给出响应
-(void)setUpData{
[self.manager GET:@"http://api.XXX.com/api/announcement" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
[CircularSpinner hide]; // <- (1)
_serverDataArr = responseObject;
self.dataArr=[NSMutableArray array];
for (NSDictionary *subDic in self.serverDataArr) {
Announcement_Model *model=[[Announcement_Model alloc]initWithDic:subDic];
[self.dataArr addObject:model];
}
_rowArr=[Events_DataHelper getFriendListDataBy:self.dataArr];
_sectionArr=[Events_DataHelper getFriendListSectionBy:[_rowArr mutableCopy]];
[self.tableView reloadData];
} failure:^(NSURLSessionTask *operation, NSError *error) {
// [CircularSpinner setValue:1.0 animated: TRUE];
[CircularSpinner hide]; // <- (2)
UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Please try again"
message:[error localizedDescription]
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok"
style:UIAlertActionStyleCancel
handler:nil];
[alertVC addAction:okAction];
[self presentViewController:alertVC animated:YES completion:nil];
}];
}
-(无效)设置数据{
[self.manager GET:@”http://api.XXX.com/api/announcement参数:无进度:无成功:^(NSURLSessionTask*任务,id响应对象){
[CircularSpinner hide];//您在willDisplayCell方法的最后一个索引处调用任何API或从本地数据库(延迟加载)获取数据吗?请使用CircularSpinner.hide()
Hi Vinaykrishnan,nope.@Test87您的表视图中有什么内容(u:cellForRowAt:)
?@staticVoidMan,tablecell以显示标题标签、日期和描述,用于共享。是否介意与Obj-C版本解决方案共享?以及对于fetchApi(已完成:bool)…在viewdidload中调用此函数?您可以在中参考答案。希望这将有帮助..隐藏在objective C版本中不支持的内容。显示错误消息“在'CircularSpinner'类型的对象上找不到属性'hide'@Test87抱歉,我是用swift编写的,请在objc样式中使用[CircularSpinner hide];
,仍然失败。将显示错误“选择器'hide'的类方法未知”appear@Test87它工作正常,我在这里检查。所以清理你的项目,并建立+再次运行。