博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UITableView实现下拉刷新的小功能
阅读量:4110 次
发布时间:2019-05-25

本文共 2584 字,大约阅读时间需要 8 分钟。

一、找到你的 UITableView / UITableViewController 的 .h 文件,结合以下代码,添加相应的元素:

#import "EGORefreshTableHeaderView.h"


@interface RootViewController 
: UITableViewController  
{


EGORefreshTableHeaderView 
*_refreshHeaderView;


//  Reloading var should really be your tableviews datasource

//  Putting it here for demo purposes

BOOL _reloading;

}


- 
(
void
)reloadTableViewDataSource;

- 
(
void
)doneLoadingTableViewData;

@end

二、切换到你的 UITableView / UITableViewController 的 .m 文件,结合以下代码,添加相应的元素:

- 
(
void
)viewDidLoad 
{

[super viewDidLoad
];


if 
(_refreshHeaderView 
== 
nil
) 
{


EGORefreshTableHeaderView 
*view 
= 
[
[EGORefreshTableHeaderView alloc
] initWithFrame
:CGRectMake
(0.0f, 0.0f 
- self.tableView.bounds.size.height, self.view.frame.size.width, self.tableView.bounds.size.height
)
];

view.delegate 
= self;

[self.tableView addSubview
:view
];

_refreshHeaderView 
= view;

[view release
];


}


//  update the last update date

[_refreshHeaderView refreshLastUpdatedDate
];

}
#pragma mark -

#pragma mark Data Source Loading / Reloading Methods


- 
(
void
)reloadTableViewDataSource
{


//  should be calling your tableviews data source model to reload

//  put here just for demo

_reloading 
= 
YES;


}


- 
(
void
)doneLoadingTableViewData
{


//  model should call this when its done loading

_reloading 
= 
NO;

[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading
:self.tableView
];


}


#pragma mark -

#pragma mark UIScrollViewDelegate Methods


- 
(
void
)scrollViewDidScroll
:
(UIScrollView 
*
)scrollView
{


[_refreshHeaderView egoRefreshScrollViewDidScroll
:scrollView
];


}


- 
(
void
)scrollViewDidEndDragging
:
(UIScrollView 
*
)scrollView willDecelerate
:
(
BOOL
)decelerate
{


[_refreshHeaderView egoRefreshScrollViewDidEndDragging
:scrollView
];


}


#pragma mark -

#pragma mark EGORefreshTableHeaderDelegate Methods


- 
(
void
)egoRefreshTableHeaderDidTriggerRefresh
:
(EGORefreshTableHeaderView
*
)view
{


[self reloadTableViewDataSource
];

[self performSelector
:
@selector
(doneLoadingTableViewData
) withObject
:
nil afterDelay
:
3.0
];


}


- 
(
BOOL
)egoRefreshTableHeaderDataSourceIsLoading
:
(EGORefreshTableHeaderView
*
)view
{


return _reloading; 
// should return if data source model is reloading


}


- 
(
*
)egoRefreshTableHeaderDataSourceLastUpdated
:
(EGORefreshTableHeaderView
*
)view
{


return 
[  date
]
// should return date data source was last changed


}

三、最后呢,为了彰显你良好的内存管理习惯,别忘了释放掉相应的 UI 元素:

- 
(
void
)viewDidUnload 
{

_refreshHeaderView
=
nil;

}


- 
(
void
)dealloc 
{


_refreshHeaderView 
= 
nil;

[super dealloc
];

}

四、编译之前,别忘了将EGORefreshTableHeaderView.hEGORefreshTableHeaderView.m两个文件,以及Enormego提供的那一套图片包拖进你的工程里。

转载地址:http://bnosi.baihongyu.com/

你可能感兴趣的文章
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>