zl程序教程

您现在的位置是:首页 >  其它

当前栏目

优化tableView加载cell与model的过程

优化 过程 加载 model cell tableView
2023-09-14 08:57:30 时间

优化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!

}

细节