swift-tableView 代理方法实现点击按钮删除效果

来源:互联网 发布:什么软件画平面图 编辑:程序博客网 时间:2024/06/06 01:19
import UIKitprotocol FirstTableViewCellDelegate: NSObjectProtocol {        func deleteCell(cell: FirstTableViewCell, button: UIButton)}class FirstTableViewCell: UITableViewCell {    @IBOutlet weak var myLabel: UILabel!    @IBOutlet weak var myButton: UIButton!    weak var delegate:FirstTableViewCellDelegate?        override func awakeFromNib() {        super.awakeFromNib()        prepareUI()        // Initialization code    }    override func setSelected(selected: Bool, animated: Bool) {        super.setSelected(selected, animated: animated)        // Configure the view for the selected state    }        func prepareUI() {                myButton.setTitle("删除", forState: UIControlState.Normal)        myButton.backgroundColor = UIColor.redColor()        myButton.layer.cornerRadius = 15        myButton.layer.masksToBounds = true        myButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)        myButton.addTarget(self, action: "BtnClick:", forControlEvents: UIControlEvents.TouchUpInside)    }        @objc private func BtnClick(button:UIButton){                delegate?.deleteCell(self, button: button)    }    }

import UIKitclass FirstViewController: UIViewController {    @IBOutlet weak var tableView: UITableView!        let cellIdentified = "cell"    var numbers = ["One","Two","Three","Foure","Five","Six","Seven","Eight","Nine","Ten"];        override func viewDidLoad() {        super.viewDidLoad()        // 准备UI        prepareUI()        // Do any additional setup after loading the view.    }   private func prepareUI() {            navigationItem.title = "首页"            tableView.delegate = self        tableView.dataSource = self    //        tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellIdentified)        tableView.registerNib(UINib(nibName: "FirstTableViewCell", bundle: nil), forCellReuseIdentifier: cellIdentified)                }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }        func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {        if editingStyle == UITableViewCellEditingStyle.Delete {            numbers.removeAtIndex(indexPath.row)            tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)        }    }    /*    // MARK: - Navigation    // In a storyboard-based application, you will often want to do a little preparation before navigation    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {        // Get the new view controller using segue.destinationViewController.        // Pass the selected object to the new view controller.    }    */    }extension FirstViewController:UITableViewDelegate, UITableViewDataSource, FirstTableViewCellDelegate {        func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {        //        let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentified, forIndexPath: indexPath)         let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentified, forIndexPath: indexPath) as! FirstTableViewCell        //        cell.textLabel?.text = numbers[indexPath.row]        cell.myLabel.text = numbers[indexPath.row]        cell.delegate = self        cell.selectionStyle = UITableViewCellSelectionStyle.None        return cell    }        func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        return numbers.count    }            func deleteCell(cell: FirstTableViewCell, button: UIButton) {                let idx:NSIndexPath = tableView.indexPathForCell(cell)!                numbers.removeAtIndex(idx.row)        tableView.deleteRowsAtIndexPaths([idx], withRowAnimation: UITableViewRowAnimation.Top)    }}

0 0