iOS开发--Swift 基于MVC设计模式的简单的tableViewDemo
如果说MVC是最好的设计模式, 可能很多人并不赞同, 但是如果说MVC是最主流, 应用面最广的设计模式, 我想这是毫无争议的. 不说废话, 直接演示在Swift中如何使用MVC新建工程(我并没有新建文件夹, 大家按照自己实际需求来).
1, 新建文件, 不多废话.
2, ViewController中代码
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{ var tableView : UITableView! var dataArray = [Model]() override func loadView() { super.loadView() //循环生成字典 ; i < ; ++i{ let item: Dictionary = ["name" : "wang", "age" : "\(i)"] let model = Model() model.setValuesForKeysWithDictionary(item) dataArray.append(model) } //初始化tableView tableView = UITableView(frame: CGRect(x: , y: , width: self.view.frame.width, height: self.view.frame.height), style: UITableViewStyle.Plain) tableView.delegate = self tableView.dataSource = self self.view.addSubview(tableView) } //tableView协议方法 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let indentifier = "tableView" var cell: MyTableViewCell! cell = tableView.dequeueReusableCellWithIdentifier(indentifier) as? MyTableViewCell if cell == nil{ cell = MyTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: indentifier) } cell.model = dataArray[indexPath.row] return cell } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return dataArray.count } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.navigationController?.navigationBar.barTintColor = UIColor.redColor() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }
3, Model中代码
import UIKit class Model: NSObject { var name: String! var age: Int = }
4, MyTableViewCell中代码
import UIKit class MyTableViewCell: UITableViewCell { var model: Model{ set{ nameLabel.text = newValue.name ageLabel.text = String(stringInterpolationSegment: newValue.age) } get{ return self.model } } var nameLabel: UILabel! var ageLabel: UILabel! override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) createCell() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } func createCell(){ nameLabel = UILabel() ageLabel = UILabel() self.contentView.addSubview(nameLabel) self.contentView.addSubview(ageLabel) } override func layoutSubviews() { super.layoutSubviews() nameLabel.frame = CGRect(x: , y: , width: , height: ) ageLabel.frame = CGRect(x: , y: , width: , height: ) } override func awakeFromNib() { super.awakeFromNib() // Initialization code }
希望能给大家一个思想, 在学习Swift的道路上, 如果之前有过一定的Java等函数语言的基础, Swift相比OC来说好学很多, 如果只是OC的基础的话, 会不太习惯类, 实例化, 静态方法属性等, 需要多多下功夫.
Demo地址:https://github.com/JianweiWangs/-MVC-Swift-TableView.git
希望大家都能学好Swift!
iOS开发--Swift 基于MVC设计模式的简单的tableViewDemo的更多相关文章
- 李洪强iOS开发Swift篇---12_NSThread线程相关简单说明
李洪强iOS开发Swift篇---12_NSThread线程相关简单说明 一 说明 1)关于多线程部分的理论知识和OC实现,在之前的博文中已经写明,所以这里不再说明. 2)该文仅仅简单讲解NSThre ...
- iOS开发Swift篇—(一)简单介绍
iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...
- iOS开发中的MVC设计模式
我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开发是 ...
- iOS开发--Swift 基于AFNetworking 3.0的网络请求封装
Swift和OC基于AFNetworking的网络请求流程相同, 就是语法不同, 对于Swift语法不是很清楚的同学, 建议多看看API文档, 自己多多尝试. 写过OC的应该都明白每句话做什么的, 就 ...
- iOS开发Swift篇(02) NSThread线程相关简单说明
iOS开发Swift篇(02) NSThread线程相关简单说明 一 说明 1)关于多线程部分的理论知识和OC实现,在之前的博文中已经写明,所以这里不再说明. 2)该文仅仅简单讲解NSThread在s ...
- iOS开发Swift篇—简单介绍
iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...
- 李洪强iOS开发Swift篇—01_简单介绍
李洪强iOS开发Swift篇—01_简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objec ...
- 基于MVC设计模式的Web应用框架:struts2的简单搭建(一)
Struts2的初步介绍 Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴.京东等互联网.政府.企业门户网站.虽然之前存在了很大的安全漏洞,在2013年让苹果.中国移动.中国联 ...
- iOS 基于MVC设计模式的基类设计
iOS 基于MVC设计模式的基类设计 https://www.jianshu.com/p/3b580ffdae00
随机推荐
- 前端构建:Less入了个门
一.前言 说到前端构建怎能缺少CSS预处理器呢!其实CSS的预处理器有很多啦,比较出名的有Scss.Sass.Stylus和Less.(最近还听说出现了Autoprefixer等CSS后处理器,可 ...
- 十五个常用的jquery代码段
十五个常用的jquery代码段 回到顶部按钮 通过使用 jQuery 中的 animate 和 scrollTop 方法,你无需插件便可创建一个简单地回到顶部动画: 1 // Back to top ...
- EXCEL countif函数多条件
在MS EXCEL中,countif如果要满足多个条件怎么办呢? 1.答案就是:使用条件集合{}和sum函数. 即在countif()第二个参数中使用条件集合{},然后用sum()函数求满足这些条件的 ...
- 转型?还是延伸?开源建站系统近乎推整套SNS社区解决方案
转型?还是延伸?开源建站系统近乎推整套SNS社区解决方案 近乎(英文:Spacebuilder),作为.net领域的SNS社区建站系统代表之一,一直在技术开发领域算是兢兢业业,在Discuz!和Php ...
- 使用NISI制作.Net程序服务安装包
1.开篇之前先说一说NISI是什么. NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序.它提供了安装.卸载.系统设置 ...
- [工具] GIF 动画每帧合并到一张 PNG
功能:将 GIF 动画每帧合并到一张 PNG 需求:配合 ImageMagick 图像处理软件. 下载:[工具]Gif2Png_Aone_1.0.0.zip 使用方法: 请到 ImageMagick ...
- CXF和spring整合遇到的问题:No bean named 'cxf' is defined
今天在做ws和spring整合的时候,很不幸的遇到了这个问题,百度了好久,竟然没人遇到这个问题,后来谷歌了一下,都是遇到这个问题的了...在看到一篇文章中提到了cxf.xml,所以我果断的打开这个配置 ...
- oracle分组查询实例ORA-00979和ORA-00937错误分析
select J.ZWJGH,J.CZZXBH,J.JZZT,J.CWNY,J.JZPZH sum(J.FSE)<!-- 聚合函数字段没在分组条件中--> from JZPZXX J &l ...
- JavaScript基础------入门基础
JavaScript他是一种描述性语言,使用JavaScript就是为了能和网页有更好的交互,下面切入主题进行讲解. 一.JavaScript 1.什么是JavaScript JavaScript是一 ...
- [转载]Context and Interception : The .NET Context
转载自:Context and Interception : The .NET Context Every new app domain starts with a single context, c ...