美文网首页
封装一个继承于UIViewController,可以让子类刷新

封装一个继承于UIViewController,可以让子类刷新

作者: DemoFootMan | 来源:发表于2016-05-29 21:50 被阅读0次

用到的三方有MJRefresh

.h

/**声明一个tableView 属性*/

@property (nonatomic, strong) UITableView *tableView;

//设置子类需要请求的参数,这里父类声明,让子类去调用

-(void)settingRequestParams:(NSMutableDictionary *)params;

.m

#import "DPRequest.h"

#import "MetaDataTool.h"

#import "DPAPI.h"

#import "MJRefresh.h"

等等...

//扩展几个属性

//1.存储服务器返回的所有订单(次订单是可变的,要适应上拉加载逻辑)

@property (nonatomic, strong ) NSMutableViewArray *dealArray ;

//2.记录当前的页数

@property (nonatomic, assign) int page;//需要转换类型

//3.记录用户最后(最新)请求对象

@property (nonatomic, strong)DPrequest *latestREquest;

@end

//功能

/*设置参数;

发送请求

获取数据,显示在tableViews上

*/

@implementation

//懒加载dealsArray,让其在用到的时候开空间

-(NSMutableView *)dealsArray {

if(nil ==_dealsArray){

_dealsArray = [NSMutableView array];

}

return  _dealsArray;

}

#pragma mark --创建下拉刷新,上拉加载更多

-(void)addRefreshControl {

//下拉刷新

self.tableView.mj_header =[MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewDeals)];

//添加完成之后,开始刷新

[self.tableView.mj_header beginRefreshing];

//上拉空间(需要加载新数据)

self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreDeals)]; 

//下拉触发方法

-(void)loadNewDeals {

self.page = 1;

//发送网络请求(GET/POST)

[self sendRequestToServer];

}

//上拉触发方法

-(void)loadMoreDeals {

self.page++;//这里加多少需要根据SDK中的要求进行设置

[self sendRequestToserver];

}

#pragma mark --向服务器请求数据

-(void)sendRequestToServer {

//创建可变字典,设置发送请求的参数

NSMutableViewDictionary *mutableDic = [NSMutableDictionary dictionary];

/****************重要***************/

[self settingRequestParams:mutableDic];//在.h中声明的方法,后面可用子类传参数去调用,这样子类就不用谢过多的网络方法

//3.发送请求

self.latestRequest = [api requestWithURL:@"......." params:mutableDic delegate:self];

}

//api协议中需要实现的2个方法(这里如果没有api代理,是否需要用到AFN?,还是自己去设置请求成功失败??)

-(void)request:(DPRequest *)request didFinishloadingWithResult:(id)result {

//如果服务器返回的request请求数据不是最新发送的请求,直接返回

if(self.lastestRequest !=request) {

return ;

}

NSArray *array = [MetaDtataTool parseDealsRequest:result];//会在另一个笔记中介绍MetaDataTool(数据变化工具类)

//把array添加到可变数组中去

[self.dealsArray addobjectsFromArray:arrray];//tableView每次刷新的行数有关

//刷新数据源

[self.tableView reloadData];

//停止下拉刷新

[self.tableView.mj_header endRefreshing];

//停止上拉刷新

[self.tableView.mj_footer endRefreshing];

}

-(void)request:(DPRequest *)request didFailWithError:(NSError *)error {

NSLog(@"返回服务器失败");

//停止下拉刷新

[self.tableView.mj_header endRefreshing];

//停止上拉刷新

[self.tableView.mj_footer endRefreshing];

}

相关文章

  • 封装一个继承于UIViewController,可以让子类刷新

    用到的三方有MJRefresh .h /**声明一个tableView 属性*/ @property (nonat...

  • java基础

    1.面向对象的特征答案:继承、多态、抽象、封装继承:子类可以继承父类,但是只能继承一个多态:重写(子类重写父类的方...

  • iOS高仿简书文章详情页面

    类继承于UIViewController,底部添加按钮必须继承于UIViewController,如果继承于UIT...

  • 2018-03-06

    基础篇: 面向对象的特征:继承+多态,封装。 继承的特性: 子类拥有父类非private的属性,方法。 子类可以拥...

  • 面向对象

    面线对象三个基本特征:继承,封装,多态。 继承:子类继承父类,子类获得父类的属性和方法。 封装:将客观事物封装成抽...

  • iOS 签名画板

    一. 封装画图板 画板就是继承于UiView的一个子类,我们可以在这个子类中添加我们画图板相应的属性和方法,然后实...

  • JAVA三大特性——继承

    继承 继承是指一个类(子类)继承于另外一个类(父类),子类从父类继承到的内容是父类的属性和方法,子类可以在内部调用...

  • Python面向对象编程-3·继承

    一、继承的概念: 子类 拥有 父类 的所有 方法 和 属性 子类 继承自 父类,可以直接 享受 父类中已经封装好的...

  • 2.面向对象编程

    1:面向对象编程的三个 要素 1:封装:将方法进行函数的封装,用的时候可以直接调用。2:继承:子类继承父类,可以拥...

  • java基础知识(一)

    1、封装、继承、多态 封装:把对象的属性与行为封装为一个独立整体,并尽可能隐藏对象内部细节 继承:子类继承父类的特...

网友评论

      本文标题:封装一个继承于UIViewController,可以让子类刷新

      本文链接:https://www.haomeiwen.com/subject/pnlelttx.html