Swift 實現簡單自定義TableViewCell
阿新 • • 發佈:2019-01-31
自定義cell其實還是比較簡單的,個人理解,直接把自己需要的控制元件新增為子檢視就行了。
下面直接給出簡單程式碼塊:
TableViewCell.swift程式碼塊如下:
class TableViewCell: UITableViewCell { var title:UILabel! var clickBtn:UIButton! override func awakeFromNib() { super.awakeFromNib() } override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) if !self.isEqual(nil) { title = UILabel(frame: CGRectMake(20, 20, 200, 30)) self.contentView.addSubview(title) clickBtn = UIButton(frame: CGRectMake(200, 20, 60, 30)) clickBtn.setTitle("app", forState: UIControlState.Normal) clickBtn.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal) clickBtn.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Highlighted) self.contentView.addSubview(clickBtn) } } required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func setSelected(selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) } }
ViewController.swift程式碼塊如下:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { var table:UITableView! var array = ["item1","item2","item3","item4","item5","item6","item7"] override func viewDidLoad() { super.viewDidLoad() title = "FirstApp" var view: UIView = UIView(frame: self.view.frame) view.backgroundColor = UIColor.whiteColor() self.view.addSubview(view) var leftButton:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Edit, target: self, action:"leftCall:") self.navigationItem.leftBarButtonItem = leftButton var rightButton:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Add, target: self, action: "rightCall:") self.navigationItem.rightBarButtonItem = rightButton var rect = self.view.frame rect.origin.y += 65 table = UITableView(frame: rect) table.registerClass(TableViewCell.self, forCellReuseIdentifier: "cell") self.view.addSubview(table) table.delegate = self table.dataSource = self } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return 60 } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return array.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var str:String = "cell" var cell:TableViewCell = tableView.dequeueReusableCellWithIdentifier(str, forIndexPath: indexPath) as TableViewCell if cell.isEqual(nil) { cell = TableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: str) } cell.title.text = array[indexPath.row] cell.clickBtn.tag = indexPath.row cell.clickBtn.removeTarget(self, action: "tableViewCellClicked:", forControlEvents: UIControlEvents.TouchUpInside) cell.clickBtn.addTarget(self, action: "tableViewCellClicked:", forControlEvents: UIControlEvents.TouchUpInside) return cell } func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { if editingStyle == UITableViewCellEditingStyle.Delete { array.removeAtIndex(indexPath.row) table.reloadData() } } func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { println("clicked at \(indexPath.row)") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func leftCall(sender:AnyObject) { table.setEditing(!table.editing, animated: true) var btn:UIBarButtonItem = sender as UIBarButtonItem btn.title = "Done" println("leftButton pressed") } func rightCall(sender:AnyObject) { array.append("新建cell") table.reloadData() println("rightButton pressed") } func tableViewCellClicked(sender:AnyObject) { println("tableViewCell appButton at \((sender as UIButton).tag) clicked") } }
以上便是swift中自定義TableViewCell的簡單實現,第一次寫blog,有錯得地方希望大神指教,當然實現自定義TableViewCell的方式不止這一種。
程式碼連結:http://download.csdn.net/detail/xyybaozhen/7991673