优化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: , data: "TypeOneModel"))
datasArray.addObject(TypeTwoModel(flag: typeTwoCellFlag, cellHeight: , 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!
}
}
细节

优化tableView加载cell与model的过程的更多相关文章
- plist文件的读取和xib加载cell
plist 文件读取 例如在工程里倒入了plist文件 在工程里需要用到plist文件里的信息,就需要把plist文件读取出来. 如程序: -(NSArray *)moreDataArr{ if (! ...
- [转]JavaScript 的性能优化:加载和执行
原文链接:http://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/index.html?ca=drs- JavaScript 的性能优化: ...
- 《前端之路》之 前端图片 类型 & 优化 & 预加载 & 懒加载 & 骨架屏
目录 09: 前端图片 类型 & 优化 & 预加载 & 懒加载 & 骨架屏 09: 前端图片 类型 & 优化 & 预加载 & 懒加载 & ...
- 【转】js JavaScript 的性能优化:加载和执行
JavaScript 的性能优化:加载和执行 转自:https://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/ 随着 Web2.0 技术的 ...
- Qt tableview加载数据
Qt tableview加载数据 //把数据加载到tableView void ImportData::loadDataInTableView() { ) { if (pageNum>stude ...
- tableView 加载更多
在ios开中中,由于屏幕尺寸限制,如果需要显示的数据很多,需要用到分页加载. 原理:先数据放到一个table中,先显示10条,table底部有一察看更多选项,点击察看更多查看解析的剩余数据.基本上就是 ...
- [Tensorflow] 使用 tf.train.Checkpoint() 保存 / 加载 keras subclassed model
在 subclassed_model.py 中,通过对 tf.keras.Model 进行子类化,设计了两个自定义模型. import tensorflow as tf tf.enable_eager ...
- Android WebView 优化页面加载效果
目前带有Web功能的APP越来越多,为了能够更好的使用WebView展示页面,可以考虑做相关的优化:WebView 缓存,资源文件本地存储,客户端UI优化. 可能有些人会说,为什么不做Native的, ...
- 浏览器加载和渲染HTML的过程(标准定义的过程以及现代浏览器的优化)
先看一下标准定义的浏览器渲染过程(网上找的): 浏览器打开网页的过程 用户第一次访问网址,浏览器向服务器发出请求,服务器返回html文件: 浏览器开始载入html代码,发现 head 标签内有一个 l ...
随机推荐
- java-多线程future等待返回
多线程中需要返回值, java中有个fork/join模型, 没有细研究, 简单实用callable进行了返回 Thread1 package com.iwhere.easy.travel.test. ...
- [Hive]HiveSQL解析原理
Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析.Hive的稳定性和 ...
- Linux下svn服务器搭建
初次在linux上搭建svn服务器,本来以为很繁琐,其实很简单,主要分为以下几个步骤: 1. 首先安装subversion,命令:yum install subversion 2. 创建svn仓库 ...
- activiti 临时笔记mark
public class TenMinuteTutorial { public static void main(String[] args) { // Create Activiti process ...
- C#byte类型
byte类型的范围是0~255转换为二进制是00000000~11111111 ---------------------------------------------------------- C ...
- PHP彻底解决mysql中文乱码
彻底解决mysql中文乱码 mysql是我们项目中非经常常使用的数据型数据库. 可是由于我们须要在数据库保存中文字符,所以经常遇到数据库乱码情况.以下就来介绍一下怎样彻底解决数据库中文乱码情况. 数据 ...
- Java基础教程(11)--对象
一.创建对象 下面的语句创建了一个对象并把它的引用赋值给了一个变量: Point originOne = new Point(23, 94); 这条语句由三部分组成(下面将详细讨论): 声明对 ...
- python 查询数据库返回的数据类型
self.conn=MySQLdb.connect(host='localhost',port=3306, user='keystone', passwd='OptValley@4312', db=s ...
- win10 安装oracle 11gR2_database(内附下载地址)
前言:想要为了后续开展项目做准备,而且打算使用oracle,所以必须先安装oracle.本机 win 10 64位系统. 第一步,下载 oracle 下载地址,官网(需要登录注册): http://d ...
- WinForm窗体多线程操作实例
最近在学习C# 多线程相关知识,这块一直比较薄弱,在网上查了一下资料,学习了一下前辈们的经验,小弟自己也比葫芦画瓢的写了一个,自学一下. 代码如下 using System; using System ...