在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() // 初始化tableView setupViews() // 右边添加按钮 setupRightBarButtonItem() // 左边删除按钮 setupLeftBarButtonItem(); } func setupViews() { self.tableView = UITableView(frame:self.view!.frame) self.tableView!.delegate = self self.tableView!.dataSource = self self.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 = 100 self.leftBtn!.userInteractionEnabled = false self.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.count let 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 = 200 self.leftBtn?.setTitle("Done", forState: UIControlState.Normal) } else { self.tableView?.setEditing(false, animated: true) self.leftBtn!.tag = 100 self.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 UITableViewCell cell.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 } // 点击cell func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { print("row = %d",indexPath.row) } }
原文:http://www.cnblogs.com/wangxianggudu/p/5107733.html