swift的UITableView的实现

姜德泽
2023-12-01

本内容是基于swift5.0版本的UITableView的实现,话不都说上代码

//
//  ViewController.swift
//  textmodel
//
//  Created by 袁灿 on 2021/7/30.
//

import UIKit

let LBFMScreenWidth = UIScreen.main.bounds.size.width
let LBFMScreenHeight = UIScreen.main.bounds.size.height

class ViewController: UIViewController {
    
    private let ViewCellID = "ViewCell"
    
    // 初始数据
    private lazy var datalist: [String] = {
        return ["标题1","标题2","标题3","标题4","标题5","标题6",]
    }()
    
    // 创建tableView
    private lazy var tableView: UITableView = {
        let tableView = UITableView.init(frame: CGRect(x: 0, y: 0, width: LBFMScreenWidth, height: LBFMScreenHeight), style: UITableView.Style.plain)
        tableView.delegate = self
        tableView.dataSource = self
        tableView.backgroundColor = UIColor.white
        // 注册cell
        tableView.register(ViewCell.self, forCellReuseIdentifier: ViewCellID)
        return tableView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        //tableView 加载在 self.view上
        self.view.addSubview(self.tableView)
    }
}

// 实现tableView的代理 UITableViewDelegate, UITableViewDataSource
extension ViewController: UITableViewDelegate, UITableViewDataSource {
     func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.datalist.count
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 50
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell: ViewCell = tableView.dequeueReusableCell(withIdentifier: ViewCellID, for: indexPath) as! ViewCell
        cell.dataStr = self.datalist[indexPath.row] // 传值
        return cell
    }
    
}
//
//  ViewCell.swift
//  textmodel
//
//  Created by 袁灿 on 2021/7/30.
//

import UIKit

class ViewCell: UITableViewCell {
    
    // 创建标题
    private lazy var titlelab: UILabel = {
        let titlelab = UILabel.init(frame: CGRect(x: 10, y: 10, width: self.frame.size.width, height: self.frame.size.height))
        titlelab.text = "标题"
        titlelab.font = UIFont.systemFont(ofSize: 15)
        return titlelab
    }()
    
    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.addSubview(self.titlelab)
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    
    // 数据传值,赋值
    var dataStr: String? {
        didSet {
            self.titlelab.text = dataStr
        }
    }
    
}

 类似资料: