第一步:简历一个 HomelTableViewCell.swift 继承于UITableViewCell
import UIKit class HomelTableViewCell: UITableViewCell { var label:UILabel? override func awakeFromNib() { super.awakeFromNib() // Initialization code } override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) self.setUpUI(); } func setUpUI(){ self.label = UILabel() self.label?.x = 12 self.label?.width = JKscreenW-24 self.label?.y = 0 self.label?.textColor = UIColor.black self.label?.font = UIFont.systemFont(ofSize: 14) self.label?.numberOfLines = 0 //self.label?.backgroundColor = UIColor.JKRandomColor() self.contentView.addSubview(self.label!) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } }
第二步: 在控制器里面创建tableview
lazy var tableview : UITableView = { // tabview的创建,遵守协议是用逗号 "," 来实现的 let tableview = UITableView() // tableview�的frame的设置 tableview.frame = CGRect(x:0,y:64,width:JKscreenW,height:JKscreenH-64-49) // tableview的背景色 tableview.backgroundColor = UIColor.brown // tableview挂代理 tableview.delegate = self tableview.dataSource = self // tableview的分割方式 tableview.separatorStyle = UITableViewCellSeparatorStyle.none return tableview }()
第三步: 在控制器里面创建添加tableview和定义cell的标识符以及cell里面的数组model
self.view.addSubview(self.tableview) private let HomereuseIdentifier = "HomereuseIdentifier" // 用于保存微博数组(这个是一个技巧,在给homeViewModels赋值时刷新数据) [HomeViewModel]是一个model的数组套字典 var homeViewModels: [HomeViewModel]? { didSet{ self.tableview.reloadData() } }
第四步:实现tableView的代理方法实现
// MARK: 苹果官方推荐将数据源代理方法单独写到一个拓展方法里面,以便提高代码的可读性 // extension: 相当于OC里面的 category 这样代码更简洁 extension HomeViewController:UITableViewDelegate,UITableViewDataSource{ // MARK: tableView段里面的 段落 数 func numberOfSections(in tableView: UITableView) -> Int { return 1 } // MARK: tableView段里面的 行 数 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return homeViewModels?.count ?? 0 } // MARK: tableView cell 的设置 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { var cell = tableView.dequeueReusableCell(withIdentifier: HomereuseIdentifier) as? HomelTableViewCell if cell == nil { cell = HomelTableViewCell(style:UITableViewCellStyle.default, reuseIdentifier: HomereuseIdentifier) cell?.selectionStyle = UITableViewCellSelectionStyle.none } let model = homeViewModels![indexPath.row] cell?.label?.text = model.text cell?.label?.height = NSString.JKtextStringHeight(string: model.text! as NSString, size: CGSize(width:JKscreenW-24,height:1000), fontSize: 14) cell?.backgroundColor = UIColor.JKRandomColor() return cell! } // MARK: tableView 的点击事件 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("\(indexPath.section)段,\(indexPath.row)行") } // MARK: tableView cell 的高度返回值 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { let model = homeViewModels![indexPath.row] return NSString.JKtextStringHeight(string: model.text! as NSString, size: CGSize(width:JKscreenW-24,height:1000), fontSize: 14) } }