swift微博第17天(UITableViewCell的自定义)
2017-12-10 本文已影响30人
IIronMan
第一步:简历一个 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)
}
}