小而美的Swift&iOS教程03-BasicListEdit

2017-05-05  本文已影响0人  invisibleMike
BasicViewEdit.gif

这个教程会涉及如下内容


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)
    }

这样我们就实现了刷新、删除、编辑的功能。

上一篇下一篇

猜你喜欢

热点阅读