ios - 当 Web 服务中没有可用的新数据时,如何在 iOS 中停止 Spinner 动画?

标签 ios json uitableview

当我滚动表格 View 时,我在表格 View 页脚处制作了一个微调器,然后它开始动画并从 Web 服务加载下一页数据但是当我的 Web 服务数据不再可用时,我想让表格 View 页脚微调器停止动画如何可能请给我解决方案。 这里我的数据解析代码是

- (void)viewDidLoad
{
pageNum=0;
self.imageArray =[[NSMutableArray alloc]init];
NSURL * url=[NSURL URLWithString:[NSString stringWithFormat:@"http://www.truemanindiamagazine.com/webservice/news.php?page=%d",pageNum]];
}
dispatch_async(kBgQueue, ^{
    data = [NSData dataWithContentsOfURL: url];
    [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
});
}

}
-(void)fetchedData:(NSData *)responsedata
{
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spinner.frame = CGRectMake(0, 0, 320, 44);
self.newsTable.tableFooterView = spinner;
if (responsedata.length > 0)
{
    [spinner startAnimating];
    NSError* error;
    self.json = [NSJSONSerialization JSONObjectWithData:responsedata options:kNilOptions error:&error];
    if ([[_json objectForKey:@"data"] isKindOfClass:[NSArray class]])
    {
        NSArray *arr = (NSArray *)[_json objectForKey:@"data"];
        [self.imageArray addObjectsFromArray:arr];
        [self.newsTable reloadData];
        NSLog(@"images,%@",self.imageArray);
    }
    self.newsTable.hidden=FALSE;
}

表格 View 滚动代码是

 -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSInteger currentOffset = scrollView.contentOffset.y;
NSInteger maximumOffset = scrollView.contentSize.height- scrollView.frame.size.height;
if (maximumOffset - currentOffset <= 0)
{
pageNum = pageNum + 1;
[self getData];
}
 }
-(void)getData
{
NSURL * url=[NSURL URLWithString:[NSString stringWithFormat:@"http://www.truemanindiamagazine.com/webservice/news.php?page=%d",pageNum]];
dispatch_async(kBgQueue, ^{
    data = [NSData dataWithContentsOfURL:url];
    [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
});
}

如果可能,请给我解决方案。第二个问题是当我滚动表格 View 时它会给我所有剩余的页面数据然后我想要当我滚动时我得到第二页数据当我下次滚动时我得到第三页数据如果有可能做一些时间间隔加载下一页的 JSON 数据?

最佳答案

从服务器获得响应后,检查响应数组计数,如果它的县为零,则使微调器停止动画并隐藏微调器。在 else 条件下,如果响应数组计数大于零,则使微调器开始动画并隐藏微调器。我希望这会帮助你。我这样完成了我的应用程序并且非常适合我。我还为我的应用程序调用了分页。 此外,如果 arraycount 为零,您可以按照代码跟随 tableview 页脚

self.theTable.tableFooterView = [UIView new];

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

一切顺利@Ashish Gabani

关于ios - 当 Web 服务中没有可用的新数据时,如何在 iOS 中停止 Spinner 动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26669850/

相关文章:

ios - 使用未解析的标识符 CNContact [swift 3]

ios - 在 iphone SDK 中读取原始音频

iphone - 同时隐藏状态栏和导航栏,就像在图片应用程序中一样

java - Jackson - Jackson 没有为嵌套对象创建 json

iphone - 如何动态更改 UITableView 的 UISwitch?

ios - 为什么 Firebase 返回数组而不是字典?

javascript - 如何使用 javascript 将 jenkins 数据获取到 HTML 页面

c# - ServiceStack.Text 是否提供 JSON 的 pretty-print ?

ios - UITableView 崩溃无法识别的选择器发送到实例

ios - 创建应用时出现 "Static table views are only valid when embedded in UITableViewController instances"如何解决?