iOS开发tableview二级联动的细节实现中注意的细节总结
首先说网络慢带来的数据显示问题
可以通过判断请求参数是否一致来刷新tableview。
SJBCategaryModel * categaryModel = self.categarys[CategarySelectRow];
NSMutableDictionary * params = [NSMutableDictionary dictionary];
categaryModel.currentPage = 1;
params[@"a"] = @"list";
params[@"c"] = @"subscribe";
params[@"category_id"] = @(categaryModel.id);
params[@"page"] = @(categaryModel.currentPage);
self.params = params;
[self.manager GET:Main_URL parameters:params progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (self.params != params) return;
[categaryModel.userArrM removeAllObjects];
for (int i=0; i<[responseObject[@"list"] count]; i++) {
SJBUserModel * model = [[SJBUserModel alloc] init];
[model setValuesForKeysWithDictionary:responseObject[@"list"][i]];
[categaryModel.userArrM addObject:model];
}
categaryModel.total = [responseObject[@"total"] integerValue];
[self.userTableView reloadData];
[self.userTableView.mj_header endRefreshing];
[self checkTableFooterState];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[self.userTableView.mj_header endRefreshing];
}];
上啦加载时,footer显示不一致的问题
if (!self.categarys.count) {
return;
}
SJBCategaryModel * categaryModel = self.categarys[CategarySelectRow];
self.userTableView.mj_footer.hidden = (categaryModel.userArrM.count == 0);
if (categaryModel.userArrM.count == categaryModel.total) {
[self.userTableView.mj_footer endRefreshingWithNoMoreData];
}else{
[self.userTableView.mj_footer endRefreshing];
}
如果请求的数据的数量与总量相等就显示没有更多的数据,若小于总量就显示点击或上拉加载更多的数据。
转载于:https://www.cnblogs.com/jianbo-su/p/5624167.html
iOS开发tableview二级联动的细节实现中注意的细节总结相关推荐
- IOS开发-TableView表视图LV2
在上一章节IOS开发-TableView表视图基础的学习后, 我觉得对于表视图的学习不应只局限于基础知识的学习,应用在实战中的话想要构建丰富的多元化视图界面我想还是必须深入地再学习下. 于是有了这个L ...
- IOS开发-TableView表视图基础
表视图在IOS中的应用非常广泛,常用于展示显示数据列表. 在工具组中包含了Table View 和Table View Cell 每个表示图都是UITableView的一个实例,每个可见行都是UITa ...
- iOS开发几年了,你清楚OC中的这些东西么!!!?
iOS开发几年了,你清楚OC中的这些东西么!!!? 前言 几年前笔者是使用Objective-C进行iOS开发, 不过在两年前Apple发布swift的时候,就开始了swift的学习, 在swift1 ...
- linux 终端 渐变色,iOS开发——UI篇文字渐变效果:图层中的mask属性
本次文章,主要讲述的是图层中的mask属性,利用它,可以做出文字渐变效果! 一.文字渐变效果: 二.文字渐变实现思路: 1.创建一个颜色渐变层,渐变图层跟文字控件一样大. 2.用文字图层裁剪渐变层,只 ...
- IOS开发之常用第三方框架(完善中)
IOS开发之常用第三方框架 AFNetworking:网络请求 SDWebImage:加载网络图片 MJRefresh:下拉刷新 MBProgressHUD/SVProgressHUD:加载提示框 M ...
- ios开发读取剪切板的内容_iOS中管理剪切板的UIPasteboard粘贴板类用法详解
一.自带剪切板操作的原生UI控件在iOS的UI系统中,有3个控件自带剪切板操作,分别是UITextField.UITextView与UIWebView.在这些控件的文字交互处进行长按手势可以在屏幕视图 ...
- iOS开发调试技巧之在App设置中切换服务器环境
在日常的App开发中,会有正式服务器与测试服务器两种不同的环境,调试或测试时经常需要在不同的环境中切换. 在使用Xcode调试时,可能需要运行两次以测试不同的服务器环境,而在打包测试时,则需要导出两个 ...
- iOS开发常用第三方开源框架 持续更新中...[转]
键盘管理 TPKeyboardAvoiding IQKeyboardManager(1.2.8) 弹窗HUD MBProgressHUD(0.9.2) SVProgressHUD UIView+Toa ...
- iOS开发 - 给Label加下划线、中划线
添加中划线: UILabel * strikeLabel = [[UILabel alloc] initWithFrame:(CGRectMake(10, 10, 50, 30))];NSString ...
最新文章
- php 表单提交2次,微信开发之php表单微信中自动提交两次问题解决办法
- spring boot自动配置
- java 本地通信_java – 本地JVM之间的通信
- vue 插入dom_vue内部复用问题以及虚拟dom的更新
- 分清DB_NAME、INSTANCE_NAME、ORACLE_SID、SERVICE_NAME、DB_DOMAIN和GLOBAL_DB_NAME
- 程序员一定会有35岁危机吗?
- 2021-4-1 多校省选模拟赛
- c语言switch为什么要加break,c语言学习笔记 switch case语句为什么要加break
- Git学习(3)GitHub和SVN的区别
- python修饰器原理_Python修饰器的函数式编程
- shell脚本 回顾 小练习
- 协鑫集成携中国成套工程在核灾区建立1GW光伏电站
- BOSS直聘:2020一季度平均招聘薪资8609元 同比增长2.8%
- Java自动化测试框架-01 - TestNG之入门篇 - (详细教程)
- python拦截修改数据包_拦截指定数据、修改JS -- mitmproxy
- 打log的方式检查程序里面的问题 及示例代码 详解
- Nmap局域网主机存活发现
- 图像 像素与分辨率的关系
- ElementUI el-input 设置 type 类型为 number 时,如何去掉上下指示箭头
- 基于PHP的人才招聘网站设计