1、使用下拉刷新控件改善用户体验
1⃣️、UITAbleViewController控件中有一个refreshControl属性,这个属性保持了UIRefreshControl类的一个对象指针 ,UIRefreshControl目前只能用于表视图界面
其中self是UITAbleViewController的子类
let rc = UIRefreshControl()
rc.attributedTitle = NSAttributedString(string: "下拉刷新")
rc.addTarget(self, action: #selector(self.refreshTableView), forControlEvents: .ValueChanged)
self.refreshControl = rc
2⃣️、回调函数中判断是否正在刷新refreshing
func refreshTableView(){
if self.refreshControl?.refreshing == true {
self.refreshControl?.attributedTitle = NSAttributedString(string: "加载中。。。。")
// 查询请求数据
}
}
3⃣️、请求成功后停止控件刷新 reload方法加载数据
self.refreshControl?.endRefreshing()
self.refreshControl?.attributedTitle = NSAttributedString(string: "下拉刷新")
加载数据
2、使用等待指示器控件
1⃣️、从技术角度说,等待指示控件可以放置中视图中
2⃣️、从设计规范上将,等待指示器控件应该放置中工具栏、导航栏、弹出的对话框中,请求结束时消失
let aiview = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
self.navigationItem.titleView = aiview
aiview.startAnimating()
self.navigationItem.prompt = "数据加载中" //用于提示用户
当接收请求时,应该停止等待指示器的旋转,需要中数据加载中添加如下内容
self.navigationItem.titleView = nil
self.navigationItem.prompt = nil
停止指示器控件本应该调用stopAnimation方法,但是放中导航栏目中的等待指示器控件与其它有所不同,我们要移除这个控件,让titl内容显示出来
在导航控制器导航项目中,设置了titleView属性,title属性就不能显示
3、使用网络等待指示器
UIApplication.sharedApplication().networkActivityIndicatorVisible = true