zoukankan      html  css  js  c++  java
  • 优化tableView加载cell与model的过程

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

    细节

  • 相关阅读:
    jsp课程笔记(五) PreparedStatement与Statement在使用时的区别
    如何和软件项目客户打交道
    小米的成功你学不会
    photoshop cs3 字体 即时预览
    maxQ的使用
    HTML5的明天,局部有小雨
    项目如何开始:怎样和客户一起搞定需求
    从拼死拼活开发软件项目到远程遥控管理
    HttpUnit简介
    JUnit使用方法
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4845087.html
Copyright © 2011-2022 走看看