现在互联网app的列表页大都支持下拉刷新和上拉加载功能, 下面列举几个常见问题。
1、UITableView下面会显示空白行,该如何隐藏?
答: 设置footerView的宽高为0。
3、如果屏幕能够显示10条, 但是只有6条数据时, 我们不希望显示MJRefresh的mj_footer, 即不想显示下图中的“No more data”
动态显示/隐藏footer就需要监听UITableView绘制完成的事件,判断UITableView和父容器的高度的大小关系。
有2个方法可以判断UITableView绘制完成:
1、 reloadData方法会在下个执行周期运行,它是异步函数,即UITableView并没有真正的绘制; layoutIfNeeded函数可以强制刷新控件,并且是阻塞运行的。
1、UITableView下面会显示空白行,该如何隐藏?
答: 设置footerView的宽高为0。
tableView?.tableFooterView = UIView(frame: CGRect.zero) //添加该行后不显示空白行
2、引用三方库MJRefresh实现下拉刷新、上拉加载功能, 建议使用cocoapod方式, 如:
use_frameworks!
pod 'MJRefresh' #下拉刷新 上划加载
然后添加桥接文件并在该文件中添加
#import "MJRefresh/MJRefresh.h" //注意:如果没配置Build Path需要带前缀模块名称
3、如果屏幕能够显示10条, 但是只有6条数据时, 我们不希望显示MJRefresh的mj_footer, 即不想显示下图中的“No more data”
动态显示/隐藏footer就需要监听UITableView绘制完成的事件,判断UITableView和父容器的高度的大小关系。
有2个方法可以判断UITableView绘制完成:
1、 reloadData方法会在下个执行周期运行,它是异步函数,即UITableView并没有真正的绘制; layoutIfNeeded函数可以强制刷新控件,并且是阻塞运行的。
self.tableView?.reloadData() //向RunLoop发送一个消息,这时并没有真正的绘制tableview
self.tableView!.layoutIfNeeded() //强制刷新且阻塞等待列表刷新完成
..... //执行逻辑