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

    细节

  • 相关阅读:
    win7 php 配置多个网站
    win7 ShuipFCMS 配置 及问题
    【转】CentOS 6 服务器安全配置指南
    好的博客 网址
    【转】管理员必备的Linux系统监控工具
    【转】centos安装memcached+php多服务器共享+session多机共享问题
    [转]CentO下限制SSH登录次数
    使用Atlas实现MySQL读写分离+MySQL-(Master-Slave)配置
    centos 内网ip访问mysql数据库
    [转]Centos6.5安装配置keepalived
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4845087.html
Copyright © 2011-2022 走看看