新浪微博客户端(20)-集成MJRefresh
HomeViewController.m
/** 集成下拉刷新控件 */
- (void)setupPullToRefreshView { __unsafe_unretained UITableView *tableView = self.tableView;
// 下拉刷新
tableView.mj_header= [MJRefreshNormalHeader headerWithRefreshingBlock:^{
[self pullToRefresh:tableView.mj_header];
}]; // 设置自动切换透明度(在导航栏下面自动隐藏)
tableView.mj_header.automaticallyChangeAlpha = YES; // 上拉刷新
tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
[self pullToLoad:tableView.mj_footer];
}]; [tableView.mj_header beginRefreshing]; // 开始进入刷新状态 } - (void)pullToRefresh:(MJRefreshHeader *)header { AFHTTPSessionManager *requestManager = [AFHTTPSessionManager manager]; NSString *urlString = @"https://api.weibo.com/2/statuses/friends_timeline.json";
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"access_token"] = [DJAccountTool account].access_token;
DJStatus *status = [self.statuses firstObject];
if (status) {
params[@"since_id"] = status.idstr; }
[requestManager GET:urlString parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSDictionary * _Nullable responseObject) {
NSArray *newStatuses = [DJStatus mj_objectArrayWithKeyValuesArray:responseObject[@"statuses"]];
// 1. 将刷新获取到的新数据添加到总数组的头部
NSRange range = NSMakeRange(, newStatuses.count);
NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:range];
[self.statuses insertObjects:newStatuses atIndexes:indexSet]; // 2. 刷新TableView
[self.tableView reloadData]; // 3. 结束刷新
[header endRefreshing]; // 4. 提示当前微博刷新数量
[self showRefreshStatusesNums:newStatuses.count]; } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[header endRefreshing];
}]; } - (void)pullToLoad:(MJRefreshFooter *)footer { AFHTTPSessionManager *requestManager = [AFHTTPSessionManager manager]; NSString *urlString = @"https://api.weibo.com/2/statuses/friends_timeline.json";
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"access_token"] = [DJAccountTool account].access_token;
DJStatus *status = [self.statuses lastObject];
if (status) {
long long max_id = [status.idstr longLongValue] - ;
params[@"max_id"] = @(max_id);
}
[requestManager GET:urlString parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSDictionary * _Nullable responseObject) {
NSArray *newStatuses = [DJStatus mj_objectArrayWithKeyValuesArray:responseObject[@"statuses"]];
// 1. 将刷新获取到的新数据添加到总数组的尾部
[self.statuses addObjectsFromArray:newStatuses]; // 2. 刷新TableView
[self.tableView reloadData]; // 3. 结束刷新
[footer endRefreshing]; } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[footer endRefreshing];
}]; }
最终效果:

新浪微博客户端(20)-集成MJRefresh的更多相关文章
- 新浪微博客户端(18)-集成下拉刷新控件UIRefreshControl
HomeViewController.m - (void)setupPullToRefreshView { UIRefreshControl *refreshControl = [[UIRefresh ...
- 新浪微博客户端(17)-集成MJExtension
使用MJExtension框架将字典转换为模型 DJHomeViewController.m /** 载入新的微博数据 */ - (void)loadNewStatues { AFHTTPSessio ...
- Android应用--新浪微博客户端新特性滚动视图和启动界面实现
新浪微博客户端新特性滚动视图和启动界面实现 2013年8月20日新浪微博客户端开发之启动界面实现 前言: 使用过新浪微博客户端的童鞋都清楚,客户端每一次升级之后第一次启动界面就会有新特性的介绍,用户通 ...
- Aisen仿新浪微博客户端项目源码
新浪目前已经限制了第三方微博的很多API接口,加上平常时间不够,所以后续可能不会面向产品的去维护Aisen,不过也有了一些新的方向,例如引入最新Android-support-library,在一个完 ...
- android 新浪微博客户端的表情功能的实现
这是一篇好文章,我转来收藏,技术的最高境界是分享. 最近在搞android 新浪微博客户端,有一些心得分享弄android客户端表情功能可以用以下思路1.首页把新浪的表情下载到本地一文件夹种,表情图片 ...
- 新浪微博客户端开发之OAuth认证篇
新浪微博客户端开发之OAuth认证篇 2013年7月29日新浪微博客户端开发 OAuth2.0授权机制我在这里就不浪费口舌了,有很多大牛都发表过相关的文章解释OAuth2.0认证的流程,我就随便找了一 ...
- android开发新浪微博客户端 完整攻略 [新手必读]
开始接触学习android已经有3个礼拜了,一直都是对着android的sdk文档写Tutorials从Hello World到Notepad Tutorial算是初步入门了吧,刚好最近对微博感兴趣就 ...
- 四次元新浪微博客户端Android源码
四次元新浪微博客户端Android源码 源码下载:http://code.662p.com/list/11_1.html [/td][td] [/td][td] [/td][td] 详细说明:http ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
随机推荐
- Windows下虚拟机安装Mac OS X ----- VM12安装Mac OS X 10.11
Windows下虚拟机安装Mac OS X -– VM12安装Mac OS X 10.11 随着Iphone在国内大行其道,越来越多的开发者涌入iOS开发大军 中,但都苦于没有苹果机,本文即将介绍WI ...
- LINUX信息安全系统设计基础第一周学习总结
Linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 二.Linux 与 Window ...
- iOS——关于打印控件
20.UIPrintFormatterUIPrintFormatter时打印格式化的抽象基类:展示了传统的可打印的内容对象可以跨页边界.由于打印格式化,打印系统,可以自动打印与打印格式化的内容相关联的 ...
- ios UILocalNotification的使用
iOS下的Notification的使用 Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iO ...
- GnuDIP制作动态域名服务器(DDNS Server)_转载http://blog.sina.com.cn/s/blog_4d4c23530100rlfj.html
这个阶段在做DDNS,虽然有dyndns和tzo两个免费的国外的DDNS服务器(支持免费用户注册使用),但是公司需求中要有GnuDIP这种服务.于是只能自己制作DDNS服务器,颇费功夫,于是想把这段记 ...
- WeisEditor 3.2.1B 使用说明 [源码下载]
WeisEditor 使用说明 1. 首先打开(Weiseditor)编辑器文件夹下js/config.js 如果此时你的项目是一个虚拟目录项目 WeisConfig.isVirtualPath = ...
- angularJS中-$route路由-$http(ajax)的使用
后台请求使用的是nodeJS驱动(后面帖代码),很简单的RESTFUL, 页面使用的是bottstarp3.0(懒人神器); 第一个例子: 在本地架设NODEJS, angular的所有请求都是请求本 ...
- JQuery ztree 异步加载实践
本来要做一个文件目录浏览界面,需要遍历所有的文件和目录,很显然一次性读取时很费时费力的一件事情. 因此就需要做异步加载.... 不过网上的几篇帖子还挺坑的!原始参考:JQuery异步加载实例,相对来说 ...
- WPF中资源引用方式汇总
在WPF应用程序开发中,总是难以记住各种访问资源的方法,遂逐一记下. 先从资源是否编译到程序集分类 一.程序集资源 资源在编译的时候嵌入到程序集中.WPF中的XAML会被编译为BAML,图片等其他资源 ...
- Mobile Web
Silun来给大家介绍几个常见的移动浏览器标签~ 当当当~ <meta name="apple-mobile-web-app-capable" content="y ...