在iOS的开发过程中,tableView的使用永远都是最常用的控件。今天学习了一下tableViewCell的操作。代码并不是很复杂,如果有OC开发经验的人,应该很容易看懂的。
class ViewController: UIViewController ,UITableViewDelegate, UITableViewDataSource { // 因为Swift中要求变量或常量在声明时就要初始化其值,所以我们在实际开发中,声明变量或常量时使用可选类型。后面代码中使用到以上变量时需要加 ! 对其解包。var tableView : UITableView? // var items :NSMutableArray?// 例如可以不用可选,var items :NSMutableArray = []var leftBtn:UIButton?override func viewDidLoad() {super.viewDidLoad()self.items = NSMutableArray()// 初始化tableViewsetupViews()// 右边添加按钮setupRightBarButtonItem()// 左边删除按钮setupLeftBarButtonItem();}func setupViews(){self.tableView = UITableView(frame:self.view!.frame)self.tableView!.delegate = selfself.tableView!.dataSource = selfself.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")self.view.addSubview(self.tableView!)}func setupLeftBarButtonItem(){self.leftBtn = UIButton(type: UIButtonType.Custom)self.leftBtn!.frame = CGRectMake(0,0,50,40)self.leftBtn!.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)self.leftBtn!.setTitle("Edit", forState: UIControlState.Normal)self.leftBtn!.tag = 100self.leftBtn!.userInteractionEnabled = falseself.leftBtn!.addTarget(self, action: "leftBarButtonItemClicked", forControlEvents: UIControlEvents.TouchUpInside)let barButtonItem = UIBarButtonItem(customView: self.leftBtn!)self.navigationItem.leftBarButtonItem = barButtonItem}func setupRightBarButtonItem(){let barButtonItem = UIBarButtonItem(title: "Add", style: UIBarButtonItemStyle.Plain, target: self, action: "rightBarButtonItemClicked")self.navigationItem.rightBarButtonItem = barButtonItem}func rightBarButtonItemClicked(){let row = self.items.countlet indexPath = NSIndexPath(forRow:row,inSection:0)self.items.addObject("1")self.tableView?.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Left)self.leftBtn!.userInteractionEnabled = true}func leftBarButtonItemClicked(){if (self.leftBtn!.tag == 100){// 设置当前tableView可编辑self.tableView?.setEditing(true, animated: true)self.leftBtn!.tag = 200self.leftBtn?.setTitle("Done", forState: UIControlState.Normal)}else{self.tableView?.setEditing(false, animated: true)self.leftBtn!.tag = 100self.leftBtn?.setTitle("Edit", forState: UIControlState.Normal)}}override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()// Dispose of any resources that can be recreated.}func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{return self.items.count}func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{let cell = tableView .dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCellcell.textLabel!.text = String(format: "%i", indexPath.row+1)return cell}// 指定可编辑的行func tableView(tableView: UITableView, setEditing indexPath: NSIndexPath) -> Bool{return true}// 编辑完成func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){self.items.removeObjectAtIndex(indexPath.row)self.tableView?.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)if (self.items.count == 0){self.leftBtn!.userInteractionEnabled = false}}// 编辑样式func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle{return (UITableViewCellEditingStyle.Delete)}// 指定哪些行可以移动func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool{return true}// 移动完成func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath){self.tableView?.moveRowAtIndexPath(sourceIndexPath, toIndexPath: destinationIndexPath)self.items.exchangeObjectAtIndex(sourceIndexPath.row, withObjectAtIndex: destinationIndexPath.row)}// 限制在同一分区移动func tableView(tableView: UITableView, targetIndexPathForMoveFromRowAtIndexPath sourceIndexPath: NSIndexPath, toProposedIndexPath proposedDestinationIndexPath: NSIndexPath) -> NSIndexPath {if sourceIndexPath.section == proposedDestinationIndexPath.section {return proposedDestinationIndexPath}return sourceIndexPath}// 点击cellfunc tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){print("row = %d",indexPath.row)}}