我正在使用创建一个CheckList应用程序UITableView。我想知道如何添加滑动以删除UITableViewCell。
UITableView
UITableViewCell
这是我的ViewController.swift:
import UIKit class ViewController: UIViewController, UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource { var tableView: UITableView! var textField: UITextField! var tableViewData:Array<String> = [] // Define Colors let lightColor: UIColor = UIColor(red: 0.996, green: 0.467, blue: 0.224, alpha: 1) let medColor: UIColor = UIColor(red: 0.973, green: 0.388, blue: 0.173, alpha: 1) let darkColor: UIColor = UIColor(red: 0.800, green: 0.263, blue: 0.106, alpha: 1) let greenColor: UIColor = UIColor(red: 0.251, green: 0.831, blue: 0.494, alpha: 1) init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) // Custom initialization } override func viewDidLoad() { super.viewDidLoad() //Set up table view self.tableView = UITableView(frame: CGRectMake(0, 100, self.view.bounds.size.width, self.view.bounds.size.height-100), style: UITableViewStyle.Plain) self.tableView.registerClass(MyTableViewCell.self, forCellReuseIdentifier: "myCell") self.tableView.backgroundColor = darkColor //self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None self.tableView.delegate = self self.tableView.dataSource = self self.view.addSubview(self.tableView) //Set up text field self.textField = UITextField(frame: CGRectMake(0, 0, self.view.bounds.size.width, 100)) self.textField.backgroundColor = lightColor self.textField.font = UIFont(name: "AvenirNext-Bold", size: 26) self.textField.delegate = self self.view.addSubview(self.textField) } //Table View Delegate func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { return tableViewData.count } func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { var myNewCell: MyTableViewCell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as MyTableViewCell myNewCell.text = self.tableViewData[indexPath.row] return myNewCell } func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { let mySelectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath) //Colors mySelectedCell.detailTextLabel.textColor = UIColor.whiteColor() mySelectedCell.tintColor = UIColor.whiteColor() //Setup Details / Date let myDate:NSDate = NSDate() var myDateFormatter:NSDateFormatter = NSDateFormatter() myDateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle mySelectedCell.detailTextLabel.text = myDateFormatter.stringFromDate(myDate) mySelectedCell.accessoryType = UITableViewCellAccessoryType.Checkmark mySelectedCell.backgroundColor = greenColor } override func prefersStatusBarHidden() -> Bool { return true } //Text Field Delegate func textFieldShouldReturn(textField: UITextField!) -> Bool { tableViewData.append(textField.text) textField.text = "" self.tableView.reloadData() textField.resignFirstResponder() return true } }
这是MyTableViewCell.swift:
import UIKit class MyTableViewCell: UITableViewCell { let medColor: UIColor = UIColor(red: 0.973, green: 0.388, blue: 0.173, alpha: 1) init(style: UITableViewCellStyle, reuseIdentifier: String) { super.init(style: UITableViewCellStyle.Subtitle, reuseIdentifier: reuseIdentifier) self.textColor = UIColor.whiteColor() self.backgroundColor = medColor self.selectionStyle = UITableViewCellSelectionStyle.None } override func awakeFromNib() { super.awakeFromNib() // Initialization code } override func setSelected(selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } }
我将iOS8用作部署目标(不确定会造成什么变化)。
添加以下两个功能:
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { return true } func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { if (editingStyle == UITableViewCellEditingStyle.Delete) { // handle delete (by removing the data from your array and updating the tableview) } }
Swift 3.0:
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { return true } override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { if (editingStyle == UITableViewCellEditingStyle.delete) { // handle delete (by removing the data from your array and updating the tableview) } }
斯威夫特4.2
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { return true } func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if (editingStyle == .delete) { // handle delete (by removing the data from your array and updating the tableview) } }