swift微博第17天(UITableViewCell的自定义)

简介: swift微博第17天(UITableViewCell的自定义)

第一步:简历一个 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)
 }
}


目录
相关文章
|
Swift
Swift -banner滚动图自定义
Swift -banner滚动图自定义
186 0
Swift -banner滚动图自定义
|
Swift
Swift - 自定义tabbar的封装
Swift - 自定义tabbar的封装
291 0
Swift - 自定义tabbar的封装
|
Swift
Swift之自定义Button
Swift之自定义Button
198 0
Swift之自定义Button
|
Swift
Swift5.1—自定义运算符
Swift5.1—自定义运算符
116 0
|
SQL 存储 Oracle
swift微博第25天(SQLite)
swift微博第25天(SQLite)
191 0
swift微博第25天(SQLite)
|
Swift
swift微博第21天(图片选择器)
swift微博第21天(图片选择器)
421 0
swift微博第21天(图片选择器)
|
Swift
swift微博第18天(NSDate+Extension.swift)
swift微博第18天(NSDate+Extension.swift)
105 0
|
Swift
swift微博第16天(KVC字典转模型)
swift微博第16天(KVC字典转模型)
113 0
|
Swift
swift微博第15天(新版的判断以及跟控制器的切换)
swift微博第15天(新版的判断以及跟控制器的切换)
145 0
swift微博第15天(新版的判断以及跟控制器的切换)
|
Swift
swift微博第14天(新特性的引导图)
swift微博第14天(新特性的引导图)
149 0
swift微博第14天(新特性的引导图)

相关课程

更多