小而美的Swift&iOS教程03-BasicListEdit
2017-05-05 本文已影响0人
invisibleMike
BasicViewEdit.gif
这个教程会涉及如下内容
- 给TableView添加下拉刷新功能
- 给TableView添加编辑编辑功能
- 给TableView添加删除功能
UIRefreshControl下拉刷新
var refreshControl: UIRefrshControl!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(refreshTable), for: .valueChanged)//添加响应目标函数
animalsTableView.refreshControl = refreshControl
}
定义响应函数refreshTable()
func refreshTable(){
self.animalList = cloudAnimalList
animalsTableView.reloadData()//重新加载列表
refreshControl.endRefreshing() //停止刷新
}
实现编辑功能
给navigationbar左上角添加edit按钮
如果你是直接使用TableViewController,可以直接使用以下语句完成编辑功能
self.navigationItem.leftBarButtonItem = self.editButtonItem
如果TableView是在ViewController基础上实现的话
需要在左上角edit按钮的action方法中添加如下代码
@IBAction func touchButtonItem(_ sender: UIBarButtonItem) {
if let title = sender.title{
switch title{
case "Edit":
animalsTableView.setEditing(true, animated: true)
sender.title = "Done"
case "Done":
animalsTableView.setEditing(false, animated: true)
sender.title = "Edit"
default: break
}
}
}
实现删除功能
在DataSource中实现以下方法设定每个cell在isEdit=true时所显示的状态
状态有两种可选形式 一种是.delete另一种是.insert
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
return UITableViewCellEditingStyle.delete
}
同时还要在Delegete中实现以下方法来响应点击
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete{
animalList.remove(at: indexPath.row)
animalsTableView.deleteRows(at: [indexPath], with: .fade)
}else if editingStyle == .insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
实现编辑功能
在DataSource中实现如下方法,使得数组中的元素和tableview一致
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
animalList.insert(animalList.remove(at: sourceIndexPath.row), at: destinationIndexPath.row)
}
这样我们就实现了刷新、删除、编辑的功能。