iOS开发——UI篇Swift篇&玩转UItableView(四)自定义&封装
UItableView自定义&封装
一:Model
class AppsModel: NSObject {
//定义模型的三个属性
var imageName:String! //图片名称
var appName:String! //应用名称
var appDescription:String! //应用描述
//自定义初始化方法
init(imageName image_Name:String , app_Name:String , app_Description:String) {
self.imageName=image_Name
self.appName=app_Name
self.appDescription=app_Description
}
// MARK: - NSCoding
func encodeWithCoder(_encoder: NSCoder)
{
_encoder.encodeObject(self.imageName, forKey: "M_imageName")
_encoder.encodeObject(self.appName, forKey: "M_appName")
_encoder.encodeObject(self.appDescription, forKey: "M_appDescription")
}
init(coder decoder: NSCoder)
{
// imageName = decoder.decodeObjectForKey("M_imageName") as String
// appName = decoder.decodeObjectForKey("M_appName") as String
// appDescription = decoder.decodeObjectForKey("M_appDescription") as String
//2015年5月2号修改
imageName = decoder.decodeObjectForKey("M_imageName") as! String
appName = decoder.decodeObjectForKey("M_appName") as! String
appDescription = decoder.decodeObjectForKey("M_appDescription") as! String
}
}
二:View
class MyTableViewCell: UITableViewCell {
var iconImageView:UIImageView! //图片
var appNameLabel:UILabel! //标题
var decLabel:UILabel! //描述
//赋值方法 - 显示cell内容方法
func showAppInfoWithModel(model:AppsModel)
{
//获取model中得图片
iconImageView.image = UIImage(named: model.imageName)
//获取model中app名称
appNameLabel.text = model.appName
//获取model中app描述
decLabel.text = model.appDescription
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?)
{
super.init(style: style, reuseIdentifier: reuseIdentifier)
//创建iconImageView
iconImageView = UIImageView(frame: CGRectMake(, , , ))
self.addSubview(iconImageView)
//创建appNameLabel
appNameLabel = UILabel(frame: CGRectMake(, , , ))
appNameLabel.font = UIFont.systemFontOfSize()
self.addSubview(appNameLabel)
//创建decLabel
decLabel = UILabel(frame: CGRectMake(, , , ))
decLabel.font = UIFont.systemFontOfSize()
decLabel.numberOfLines =
decLabel.textColor = UIColor.lightGrayColor()
self.addSubview(decLabel)
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
三:Controller
class UITableViewControllerCustom: UIViewController, UITableViewDataSource, UITableViewDelegate {
var titleString:String!
@IBOutlet var titleLabel:UILabel!
@IBOutlet var listTableView : UITableView!
//定义数组
var items:[AppsModel]!
//返回按钮事件
@IBAction func backButtonClick()
{
self.navigationController?.popViewControllerAnimated(true)
}
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.text = titleString
//定义三个模型对象
var model1:AppsModel = AppsModel(imageName: "appIcon1.png", app_Name: "Football Maze", app_Description: "足球迷宫,迷宫的新玩法,益智虚拟迷宫游戏。快来挑战你的空间想象,足球迷宫带你到一个不同的世界… 迷宫大家都在玩,你还在等什么。")
var model2:AppsModel = AppsModel(imageName: "appIcon2.png", app_Name: "租房点评", app_Description: "租房被骗?现在开始,你来改变这一切!《租房点评》为你而备,租房无忧!")
var model3:AppsModel = AppsModel(imageName: "appIcon3.png", app_Name: "iJump", app_Description: "摇动手机,松鼠就可以运动啦,越跳越高,注意会有虫子咬坏跳板哦,祝你玩得开心")
var model4:AppsModel = AppsModel(imageName: "appIcon4.png", app_Name: "哪里逃", app_Description: "哪里逃 是一款躲避类游戏,拖动美女图片,躲避,追来的帅锅,帅锅人数越来越多,不要被追到哦。")
//修改数组值
items = [model1,model2,model3,model4]
//TabelView刷新
listTableView.reloadData()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
//MARK: - UITableViewDelegate
//tableView数据源:返回行数
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return items.count
}
//tableView 数据源:每一行高度
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
}
//tableView数据源:每一行内容
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
//Cell标示符,代表一系列
// OC:使用static, swift:使用let
let cellIdentifier: String = "cellIdentifier"
//通过cellIdentifier标示符取没有使用的Cell
//有可能不存在,所以使用:optional
var cell: MyTableViewCell? = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? MyTableViewCell
//如果cell取到是空
if cell == nil { // no value
//创建新的MyTableViewCell实例
//cell样式:UITableViewCellStyle.Default
//cell标示符:cellIdentifier
cell = MyTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdentifier)
//设置字体
// cell!.textLabel.font = UIFont.systemFontOfSize(14)
//2015年4月10号修改
cell!.textLabel?.font = UIFont.systemFontOfSize()
//设置选中cell样式
cell!.selectionStyle = .Gray;
//设置cell后面箭头样式
cell!.accessoryType = .DisclosureIndicator;
}
var cellModel:AppsModel = self.items[indexPath.row]
//通过自定义方法给cell赋值
cell?.showAppInfoWithModel(cellModel)
return cell!;
}
//tableView代理:点击一行
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
//释放选中效果
tableView.deselectRowAtIndexPath(indexPath, animated: true)
var urlString:String! = "https://itunes.apple.com/us/app/fruit-storm/id859713088?l=zh&ls=1&mt=8"
{
urlString = "https://itunes.apple.com/us/app/football-maze/id879720177?l=zh&ls=1&mt=8"
}
{
urlString = "https://itunes.apple.com/us/app/zu-fang-dian-ping/id893902071?l=zh&ls=1&mt=8"
}
{
urlString = "https://itunes.apple.com/us/app/ijump/id877475648?l=zh&ls=1&mt=8"
}
{
urlString = "https://itunes.apple.com/us/app/na-li-tao/id880016522?l=zh&ls=1&mt=8"
}
UIApplication.sharedApplication().openURL(NSURL(string: urlString)!)
}
}
iOS开发——UI篇Swift篇&玩转UItableView(四)自定义&封装的更多相关文章
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
- iOS开发——新特性Swift篇&Swift 2.0 异常处理
Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 i ...
- iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍
UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...
- iOS开发——网络编程Swift篇&Alamofire详解
Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AF ...
- ios开发——实用技术总结Swift篇&swift常用开发技术总结
swift常用开发技术总结 懒加载:属性,数组(字典),控件... 数组(懒加载): lazy var shops:Array<Dictionary<String, String>& ...
- iOS开发——网络编程Swift篇&(八)SwiftyJSON详解
SwiftyJSON详解 最近看了一些网络请求的例子,发现Swift在解析JSON数据时特别别扭,总是要写一大堆的downcast(as?)和可选(Optional),看?号都看花了.随后发现了这个库 ...
- ios开发——实用技术篇Swift篇&地址薄、短信、邮件
//返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(tru ...
- iOS开发——图形编程Swift篇&CAShapeLayer实现圆形图片加载动画
CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形 ...
- iOS开发零基础--Swift篇 元组
元组的介绍 元组是Swift中特有的,OC中并没有相关类型 它是什么呢? 它是一种数据结构,在数学中应用广泛 类似于数组或者字典 可以用于定义一组数据 组成元组类型的数据可以称为“元素” 元组的定义 ...
- iOS开发零基础--Swift篇 循环
循环的介绍 在开发中经常会需要循环 常见的循环有:for/while/do while. 这里我们只介绍for/while,因为for/while最常见 for循环的写法 最常规写法 // 传统写法 ...
随机推荐
- 33条C#、.Net经典面试题目及答案
33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如".NET中类和结构的区别"."ASP.NET页面之间传递值的几种方式? ...
- c语言字符串大小写字母转换
输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变. 输入格式: 输入在一行中给出一个长度不超过40的.以#结束的非空字符串. 输出格式: 在一 ...
- 怎样下载完整的Spring包
自从3.2版本以后,Spring不再提供包含所有库的文件下载了只有Sping自身的最基本库,所依赖的东西需要自己搞定首先, 这个链接 包含了Spring自身和所用到的所有东西 这个 是上述链接的说 ...
- Flex通信-Java服务端通信实例
转自:http://blessht.iteye.com/blog/1132934Flex与Java通信的方式有很多种,比较常用的有以下方式: WebService:一种跨语言的在线服务,只要用特定语言 ...
- Java(jdk1.7) 陷阱
String[] strA = new String[4]; for(int i=0; i<4; i++) { strA[i] = String.valueOf(i); } strA[0] = ...
- 第二百一十三天 how can I 坚持
今天去爬山了,百望山,山好矮,绕来绕去也挺远的,山上有座庙,佘太君庙,还有个望京楼,还看到了个写书法的,不懂,但很崇拜. 今天玩LOL全输了,咋搞的呢. 还有买了点排骨,都没吃完. 下周去爬凤凰岭. ...
- Failed to load libGL.so in android
使用命令:find / -name libGL.so 得到: /usr/lib/i386-linux-gnu/libGL.so /usr/lib/i386-linux-gnu/mesa/libGL.s ...
- POJ1469COURSES(二分图匹配)
裸的二分图匹配 题目poj.org/problem?id=1469 不解释:
- POJ 3169 Layout (差分约束)
题意:给定一些母牛,要求一个排列,有的母牛距离不能超过w,有的距离不能小于w,问你第一个和第n个最远距离是多少. 析:以前只是听说过个算法,从来没用过,差分约束. 对于第 i 个母牛和第 i+1 个, ...
- CCPC总结
[印象·南阳] 10月15日出发,威海—烟台—郑州—南阳,一路上欢声笑语,从谁是卧底到各类纸牌游戏,也是欢乐.在从郑州到南阳的车上,对面的好像是河南当地的学长,感叹道工作不易的样子,说还是学生时代最为 ...