zoukankan      html  css  js  c++  java
  • iOS开发--Swift 基于MVC设计模式的简单的tableViewDemo

     如果说MVC是最好的设计模式, 可能很多人并不赞同, 但是如果说MVC是最主流, 应用面最广的设计模式, 我想这是毫无争议的. 不说废话, 直接演示在Swift中如何使用MVC新建工程(我并没有新建文件夹, 大家按照自己实际需求来).

      1, 新建文件, 不多废话.

      

      2, ViewController中代码

      

    复制代码
     1 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{
     2     
     3     var tableView : UITableView!
     4     var dataArray = [Model]()
     5     
     6     override func loadView() {
     7         
     8         super.loadView()
     9         //循环生成字典
    10         for var i = 0; i < 5; ++i{
    11             let item: Dictionary = ["name" : "wang", "age" : "(i)"]
    12             let model = Model()
    13             model.setValuesForKeysWithDictionary(item)
    14             dataArray.append(model)
    15         }
    16         
    17         //初始化tableView
    18         tableView = UITableView(frame: CGRect(x: 0, y: 0,  self.view.frame.width, height: self.view.frame.height), style: UITableViewStyle.Plain)
    19         tableView.delegate = self
    20         tableView.dataSource = self
    21         
    22         self.view.addSubview(tableView)
    23         
    24     }
    25     //tableView协议方法
    26     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    27         
    28         let indentifier = "tableView"
    29         var cell: MyTableViewCell!
    30         cell = tableView.dequeueReusableCellWithIdentifier(indentifier) as? MyTableViewCell
    31         if cell == nil{
    32             cell = MyTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: indentifier)
    33         }
    34         cell.model = dataArray[indexPath.row]
    35         
    36         return cell
    37     }
    38     
    39     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    40         
    41         return dataArray.count
    42     
    43     }
    44     override func viewDidLoad() {
    45         super.viewDidLoad()
    46         // Do any additional setup after loading the view, typically from a nib.
    47         self.navigationController?.navigationBar.barTintColor = UIColor.redColor()
    48 
    49     }
    50 
    51     override func didReceiveMemoryWarning() {
    52         super.didReceiveMemoryWarning()
    53         // Dispose of any resources that can be recreated.
    54     }
    复制代码

      3, Model中代码

    复制代码
    1 import UIKit
    2 
    3 class Model: NSObject {
    4 
    5     var name: String!
    6     var age: Int = 0
    7 
    8 }
    复制代码

      4, MyTableViewCell中代码

    复制代码
     1 import UIKit
     2 
     3 class MyTableViewCell: UITableViewCell {
     4 
     5     
     6     var model: Model{
     7         set{
     8             nameLabel.text = newValue.name
     9             ageLabel.text = String(stringInterpolationSegment: newValue.age)
    10         }
    11         get{
    12             return self.model
    13         }
    14     }
    15     var nameLabel: UILabel!
    16     var ageLabel: UILabel!
    17     
    18     override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    19         super.init(style: style, reuseIdentifier: reuseIdentifier)
    20         createCell()
    21     }
    22 
    23     required init?(coder aDecoder: NSCoder) {
    24         fatalError("init(coder:) has not been implemented")
    25     }
    26     
    27     func createCell(){
    28         nameLabel = UILabel()
    29         ageLabel = UILabel()
    30         
    31         self.contentView.addSubview(nameLabel)
    32         self.contentView.addSubview(ageLabel)
    33     }
    34     
    35     override func layoutSubviews() {
    36         super.layoutSubviews()
    37         nameLabel.frame = CGRect(x: 0, y: 0,  50, height: 20)
    38         ageLabel.frame = CGRect(x: 50, y: 0,  20, height: 20)
    39     }
    40     
    41     
    42     
    43     override func awakeFromNib() {
    44         super.awakeFromNib()
    45         // Initialization code
    46     }
  • 相关阅读:
    9、Spring Boot 2.x 集成 Thymeleaf
    【专题】Spring Boot 2.x 面试题
    8、Spring Boot 2.x 服务器部署
    7、Spring Boot 2.x 集成 Redis
    6、Spring Boot 2.x 集成 MyBatis
    5、Spring Boot 2.x 启动原理解析
    4、Spring Boot 2.x 自动配置原理
    3、Spring Boot 2.x 核心技术
    2、Spring Boot 2.x 快速入门
    centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL
  • 原文地址:https://www.cnblogs.com/XieMinQiang/p/5275730.html
Copyright © 2011-2022 走看看