IOS UITableview右滑多个按钮Swift实现

2016-06-06  本文已影响668人  MJ爱运动

今天在简书上看到一个类似的文章,用的是oc方式实现,然后自己无聊用Swift方法实现下,也算是练习一下。

代码如下

import UIKit

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource{
    var tableview:UITableView = UITableView();//建立tableview
    var dataArr:NSMutableArray = [1,2,3,4,5,6,7,8];//设置数据源
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        tableview.bounds = UIScreen.mainScreen().bounds;//设置tablview的大小
        tableview.center = CGPointMake(UIScreen.mainScreen().bounds.maxX/2, UIScreen.mainScreen().bounds.maxY/2)//设置tableview的中心
        tableview.backgroundColor = UIColor.whiteColor();
        tableview.delegate=self;
        tableview.dataSource=self;
        self.view.addSubview(tableview);
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1;
    }
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataArr.count;
    }
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let Idnetfier = "cell"
        let cell:UITableViewCell = UITableViewCell(style: .Default, reuseIdentifier: Idnetfier)
        cell.textLabel?.text = "\(dataArr[indexPath.row])I am a cell";
        return cell;
    }
    //设置动作按钮的函数
    func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
        //添加删除按钮
        let deleteRowAction:UITableViewRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Destructive, title: "删除", handler: {
            (action:UITableViewRowAction,index:NSIndexPath) in
            //先从数据源那里删除数据
            self.dataArr.removeObjectAtIndex(indexPath.row);
            //然后在把tableview上的指定行删除
            self.tableview.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic);
            
        })
        let insertRowAction:UITableViewRowAction = UITableViewRowAction(style:.Default, title: "置顶", handler: {
            (action:UITableViewRowAction,index:NSIndexPath) in
            //把数据源地一行的数据和当前点击行的数据交换
            self.dataArr.exchangeObjectAtIndex(0, withObjectAtIndex: indexPath.row);
            //获取tableview中第一行的indexpath
            let firstIndex:NSIndexPath = NSIndexPath(forRow: 0, inSection: indexPath.section)
            //通过第一行的index和当前点击行的index来进行行的交换
            self.tableview.moveRowAtIndexPath(indexPath, toIndexPath: firstIndex);
        })
        let moreRowAction:UITableViewRowAction = UITableViewRowAction(style:.Default, title: "重置", handler: {
            (action:UITableViewRowAction,index:NSIndexPath) in
            //重新加载tablview
            self.tableview.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Bottom)
        })
        let actions = [deleteRowAction,insertRowAction,moreRowAction];
        return actions;
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}


上一篇下一篇

猜你喜欢

热点阅读