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
随机推荐
- Git学习笔记(三)
一.标签是什么 发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一 ...
- Winform应用程序实现通用遮罩层
在WEB上,我们在需要进行大数据或复杂逻辑处理时,由于耗时较长,一般我们会在处理过程中的页面上显示一个半透明的遮罩层,上面放个图标或提示:正在处理中...等字样,这样用户体验就比较好了,然而如果在Wi ...
- MVC中Action参数绑定的过程
一.题外话 上一篇:MVC中Action的执行过程 ControllerContext 封装有了与指定的 RouteBase 和 ControllerBase 实例匹配的 HTTP 请求的信息. 二. ...
- Redis 集群方案
根据一些测试整理出来的一份方案(转自http://www.cnblogs.com/lulu/): 1. Redis 性能 对于redis 的一些简单测试,仅供参考: 测试环境:Redhat6.2 , ...
- LINQ to SQL语句(2)之Select/Distinct
适用场景:o(∩_∩)o- 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也就是结果返回回来:延迟.Select/ ...
- .net获取本机公网IP代码
类的代码如下: using System; using System.Net; using System.Text.RegularExpressions; namespace Keleyi.Com { ...
- iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)
iOS学习(OC语言)知识点整理 一.OC中的数组 1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的, 可以存放重复的元 ...
- 提高生产性工具 - Model代码生成器(NET / JAVA) (一)
原来在上一家公司,整整一年都在做工具,提高生产性,那个项目特别巨大,所以总共为老东家节约了500K左右的美金. (除了表扬之外,我个人什么好处都没有,领导们都升官发财了,郁闷) 到了新公司,也准备开发 ...
- Delegate
public delegate void EventHandler(object sender, EventArgs e); pulic EventHandler HandleMapMessage; ...
- 点击页面任何位置隐藏div
<include file="Public:header" /> <style type="text/css"> table{width ...