iOS开发——UI篇Swift篇&玩转UItableView(四)自定义&封装

UItableView自定义&封装

一:Model

 1 class AppsModel: NSObject {
 2
 3     //定义模型的三个属性
 4     var imageName:String!  //图片名称
 5     var appName:String!     //应用名称
 6     var appDescription:String!      //应用描述
 7
 8
 9
10     //自定义初始化方法
11     init(imageName image_Name:String , app_Name:String , app_Description:String) {
12         self.imageName=image_Name
13         self.appName=app_Name
14         self.appDescription=app_Description
15     }
16
17
18
19     // MARK: - NSCoding
20     func encodeWithCoder(_encoder: NSCoder)
21     {
22         _encoder.encodeObject(self.imageName, forKey: "M_imageName")
23         _encoder.encodeObject(self.appName, forKey: "M_appName")
24         _encoder.encodeObject(self.appDescription, forKey: "M_appDescription")
25     }
26
27
28     init(coder decoder: NSCoder)
29     {
30 //        imageName = decoder.decodeObjectForKey("M_imageName") as String
31 //        appName = decoder.decodeObjectForKey("M_appName") as String
32 //        appDescription = decoder.decodeObjectForKey("M_appDescription") as String
33
34         //2015年5月2号修改
35         imageName = decoder.decodeObjectForKey("M_imageName") as! String
36         appName = decoder.decodeObjectForKey("M_appName") as! String
37         appDescription = decoder.decodeObjectForKey("M_appDescription") as! String
38     }
39
40 }

二:View

 1 class MyTableViewCell: UITableViewCell {
 2
 3     var iconImageView:UIImageView!   //图片
 4     var appNameLabel:UILabel!        //标题
 5     var decLabel:UILabel!            //描述
 6
 7     //赋值方法 - 显示cell内容方法
 8     func showAppInfoWithModel(model:AppsModel)
 9     {
10         //获取model中得图片
11         iconImageView.image = UIImage(named: model.imageName)
12
13         //获取model中app名称
14         appNameLabel.text = model.appName
15
16         //获取model中app描述
17         decLabel.text = model.appDescription
18     }
19
20     override init(style: UITableViewCellStyle, reuseIdentifier: String?)
21     {
22         super.init(style: style, reuseIdentifier: reuseIdentifier)
23
24         //创建iconImageView
25         iconImageView = UIImageView(frame: CGRectMake(10, 5, 40, 40))
26         self.addSubview(iconImageView)
27
28         //创建appNameLabel
29         appNameLabel = UILabel(frame: CGRectMake(60, 0, 220, 15))
30         appNameLabel.font = UIFont.systemFontOfSize(16)
31         self.addSubview(appNameLabel)
32
33         //创建decLabel
34         decLabel = UILabel(frame: CGRectMake(60, 15, 220, 35))
35         decLabel.font = UIFont.systemFontOfSize(12)
36         decLabel.numberOfLines = 2
37         decLabel.textColor = UIColor.lightGrayColor()
38         self.addSubview(decLabel)
39
40     }
41
42     required init(coder aDecoder: NSCoder) {
43         fatalError("init(coder:) has not been implemented")
44     }
45
46
47
48     override func awakeFromNib() {
49         super.awakeFromNib()
50         // Initialization code
51     }
52
53     override func setSelected(selected: Bool, animated: Bool) {
54         super.setSelected(selected, animated: animated)
55
56         // Configure the view for the selected state
57     }
58
59 }

三:Controller

  1 class UITableViewControllerCustom: UIViewController, UITableViewDataSource, UITableViewDelegate  {
  2
  3     var titleString:String!
  4
  5     @IBOutlet var titleLabel:UILabel!
  6     @IBOutlet var listTableView : UITableView!
  7
  8
  9     //定义数组
 10     var items:[AppsModel]!
 11
 12
 13     //返回按钮事件
 14     @IBAction func backButtonClick()
 15     {
 16         self.navigationController?.popViewControllerAnimated(true)
 17     }
 18
 19
 20     override func viewDidLoad() {
 21         super.viewDidLoad()
 22
 23         titleLabel.text = titleString
 24
 25         //定义三个模型对象
 26         var model1:AppsModel = AppsModel(imageName: "appIcon1.png", app_Name: "Football Maze", app_Description: "足球迷宫,迷宫的新玩法,益智虚拟迷宫游戏。快来挑战你的空间想象,足球迷宫带你到一个不同的世界… 迷宫大家都在玩,你还在等什么。")
 27         var model2:AppsModel = AppsModel(imageName: "appIcon2.png", app_Name: "租房点评", app_Description: "租房被骗?现在开始,你来改变这一切!《租房点评》为你而备,租房无忧!")
 28         var model3:AppsModel = AppsModel(imageName: "appIcon3.png", app_Name: "iJump", app_Description: "摇动手机,松鼠就可以运动啦,越跳越高,注意会有虫子咬坏跳板哦,祝你玩得开心")
 29         var model4:AppsModel = AppsModel(imageName: "appIcon4.png", app_Name: "哪里逃", app_Description: "哪里逃 是一款躲避类游戏,拖动美女图片,躲避,追来的帅锅,帅锅人数越来越多,不要被追到哦。")
 30
 31         //修改数组值
 32         items = [model1,model2,model3,model4]
 33
 34         //TabelView刷新
 35         listTableView.reloadData()
 36
 37         // Do any additional setup after loading the view.
 38     }
 39
 40     override func didReceiveMemoryWarning() {
 41         super.didReceiveMemoryWarning()
 42         // Dispose of any resources that can be recreated.
 43     }
 44
 45
 46     /*
 47     // MARK: - Navigation
 48
 49     // In a storyboard-based application, you will often want to do a little preparation before navigation
 50     override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
 51         // Get the new view controller using segue.destinationViewController.
 52         // Pass the selected object to the new view controller.
 53     }
 54     */
 55
 56
 57     //MARK: - UITableViewDelegate
 58     //tableView数据源:返回行数
 59     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
 60     {
 61         return items.count
 62     }
 63
 64     //tableView 数据源:每一行高度
 65     func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
 66     {
 67         return 50
 68     }
 69
 70     //tableView数据源:每一行内容
 71     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
 72     {
 73         //Cell标示符,代表一系列
 74         // OC:使用static,  swift:使用let
 75         let cellIdentifier: String = "cellIdentifier"
 76
 77         //通过cellIdentifier标示符取没有使用的Cell
 78         //有可能不存在,所以使用:optional
 79         var cell: MyTableViewCell? = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? MyTableViewCell
 80
 81         //如果cell取到是空
 82         if cell == nil { // no value
 83
 84             //创建新的MyTableViewCell实例
 85             //cell样式:UITableViewCellStyle.Default
 86             //cell标示符:cellIdentifier
 87             cell = MyTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdentifier)
 88
 89             //设置字体
 90 //            cell!.textLabel.font = UIFont.systemFontOfSize(14)
 91             //2015年4月10号修改
 92             cell!.textLabel?.font = UIFont.systemFontOfSize(14)
 93
 94
 95             //设置选中cell样式
 96             cell!.selectionStyle = .Gray;
 97
 98             //设置cell后面箭头样式
 99             cell!.accessoryType = .DisclosureIndicator;
100         }
101
102         var cellModel:AppsModel = self.items[indexPath.row]
103
104         //通过自定义方法给cell赋值
105         cell?.showAppInfoWithModel(cellModel)
106
107         return cell!;
108     }
109
110     //tableView代理:点击一行
111     func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
112     {
113         //释放选中效果
114          tableView.deselectRowAtIndexPath(indexPath, animated: true)
115
116         var urlString:String! = "https://itunes.apple.com/us/app/fruit-storm/id859713088?l=zh&ls=1&mt=8"
117
118         if indexPath.row == 0
119         {
120             urlString = "https://itunes.apple.com/us/app/football-maze/id879720177?l=zh&ls=1&mt=8"
121         }else if indexPath.row == 1
122         {
123             urlString = "https://itunes.apple.com/us/app/zu-fang-dian-ping/id893902071?l=zh&ls=1&mt=8"
124         }else if indexPath.row == 2
125         {
126             urlString = "https://itunes.apple.com/us/app/ijump/id877475648?l=zh&ls=1&mt=8"
127         }else if indexPath.row == 3
128         {
129             urlString = "https://itunes.apple.com/us/app/na-li-tao/id880016522?l=zh&ls=1&mt=8"
130         }
131
132         UIApplication.sharedApplication().openURL(NSURL(string: urlString)!)
133     }
134 }
时间: 2024-10-09 15:28:40

iOS开发——UI篇Swift篇&玩转UItableView(四)自定义&封装的相关文章

iOS开发——UI高级Swift篇&swift简单总结tableView

swift简单总结tableView 今天来总结一个很简单的问题,真心说出来丢脸,但是由于本人在写swift项目的时候总是发现Xib不能加载,而且不止一次,所以就简单的总结一下! 一:简单的使用缓存池 1.设置StoryBoard中cell的ID 2.在控制器的Cell中就可以直接使用ID创建了 1 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UI

iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用

Swift 2.0和Objective-C2.0混编之第三方框架的使用 swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引入了多种新功能,使得编程工作更加简便,灵活! 2015年6月9日苹果又一次给所有开发之者带来了一个惊喜,那就是今年年底swift讲开源,者队iOS开发着来说无疑是一个值得兴奋的消息,可是就在这短短的几个月里面swift吸引了越来

iOS开发——新特性Swift篇&Swift 2.0 异常处理

Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 iOS 开发当中,我们会面对很多异常处理.在 Cocoa Touch 中我们使用 NSError 来进行异常处理.在新的 Swift 2.0 中,我们可以使用新的 ErrorType protocol. 在 Swift 中, enum 是最好的方法建立属于你自己的异常类型,你只要在你的 enum 中确

iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍

UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道,单例在应用程序的整个生命周期中只有一个对象). App的启动过程 打开程序之后-> 1:Main函数 2:UIapplicationMain函数 3:初始化UIApplication(创建) 4:设置UIApplication代理和相应的代理属性 5:开启事件循环,监听系统事件 6监测info.p

iOS开发——网络编程Swift篇&Alamofire详解

Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AFNetworking非常稳定,在Mac OSX与iOS中也能像其他Objective-C代码一样用Swift编写.不过Alamofire更适合Swift语言风格习惯(Alamofire与AFNetworking可以共存一个项目中,互不影响). Alamofire 取名来源于Alamo Fire fl

iOS开发——项目实战Swift篇&swift 2.0项目开发总结二(开发常用)

swift 2.0项目开发总结二(开发常用) 一:相册中选择相片到App指定位置 随 着相机像素的提高,实际用户选择的图片都是很大的,有的高达5.6M,如果直接使用用户选着的图片,非常消耗内存,并且也用不到这么高像素的图片,可以当 用户选着好图片后,在UIImagePickerController对应的代理方法中,先将图片进行重新绘制为需要的大小,在设置给iconView 1 /// MARK: 摄像机和相册的操作和代理方法 2 extension MeViewController: UIIma

iOS开发——学习总结swift篇&swift 2.0学习与总结一

swift 2.0学习与总结一 一:属性策略(OC中的叫法) strong: 在Swift中是默认的 weak: 通过weak关键词申明 weak var delegate: UITextFieldDelegate? readonly,readwrie 直接通过声明变量var,声明常量let的方式来指明 copy 通过@NSCopying指令声明. 值 得注意的是String,Array和Dictionary在Swift是以值类型(value type)而不是引用类型(reference typ

ios开发——实用技术篇Swift篇&地址薄、短信、邮件

1 //返回按钮事件 2 @IBAction func backButtonClick() 3 { 4 self.navigationController?.popViewControllerAnimated(true) 5 } 6 7 //新增联系人 8 @IBAction func addPeople () 9 { 10 //取得电话薄句柄 11 var error:Unmanaged<CFError>? 12 var addressBook: ABAddressBookRef? = AB

iOS开发——项目实战Swift篇&amp;swift 2.0项目开发总结一(开发常用)

swift 2.0项目开发总结一(开发常用) 一:新特性(版本判断)的实现 1 let versionStr = "CFBundleShortVersionString" 2 let cureentVersion = NSBundle.mainBundle().infoDictionary![versionStr] as! String 3 let oldVersion = (NSUserDefaults.standardUserDefaults().objectForKey(vers

ios开发——实用技术总结Swift篇&amp;swift常用开发技术总结

swift常用开发技术总结 懒加载:属性,数组(字典),控件... 数组(懒加载): 1 lazy var shops:Array<Dictionary<String, String>> = { 2 3 return [ 4 5 [ 6 7 "icon" : "danjianbao", 8 9 "name" : "单肩包" 10 11 ], 12 13 [ 14 15 "icon"