优化tableView加载cell与model的过程
效果图
说明
1. 用多态的特性来优化tableView加载cell与model的过程
2. swift写起来果然要比Objective-C简洁了不少
源码
https://github.com/YouXianMing/Swift-TableViewDemo
https://github.com/YouXianMing/OC-TableViewDemo
// // ViewController.swift // Swift-TableViewDemo // // Created by YouXianMing on 15/9/28. // Copyright © 2015年 YouXianMing. All rights reserved. // import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { let typeOneCellFlag : String! = "typeOneCellFlag" let typeTwoCellFlag : String! = "typeTwoCellFlag" var datasArray : NSMutableArray! var tableView : UITableView! override func viewDidLoad() { super.viewDidLoad() self.initDatasArray() self.initTableView() } // 数据源相关 func initDatasArray() { datasArray = NSMutableArray() datasArray.addObject(TypeOneModel(flag: typeOneCellFlag, cellHeight: 100, data: "TypeOneModel")) datasArray.addObject(TypeTwoModel(flag: typeTwoCellFlag, cellHeight: 200, data: "TypeTwoModel")) } // tableView相关 func initTableView() { tableView = UITableView(frame: view.bounds, style: .Plain) tableView.delegate = self tableView.dataSource = self tableView.separatorStyle = .None view.addSubview(tableView) tableView.registerClass(TypeOneCell.classForCoder(), forCellReuseIdentifier: typeOneCellFlag) tableView.registerClass(TypeTwoCell.classForCoder(), forCellReuseIdentifier: typeTwoCellFlag) } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return datasArray.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let model : BaseModel! = datasArray[indexPath.row] as! BaseModel let cell : BaseTableViewCell! = tableView.dequeueReusableCellWithIdentifier(model.cellFlag!) as! BaseTableViewCell cell.tableView = tableView cell.indexPath = indexPath cell.data = model.data cell.loadData() return cell } func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { let model : BaseModel! = datasArray[indexPath.row] as! BaseModel return model.cellHeight! } }
细节
原文:http://www.cnblogs.com/YouXianMing/p/4845087.html