如果说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!