import UIKit protocol 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 UIKit class 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) } }