Swift纯Code之旅 Day9. 「TableView(1) - TableView Cell内容制作」

前言

昨天已经将TableView给建立完毕了,今天来跟大家聊聊TableViewCell的建立方法,
首先介绍一下TableViewCell,TableViewCell就是TableView上面的栏位,
一个栏位就等於一个Cell。

第一步:观察

实作TableViewCell前,必须先观察Cell中有哪些元件,才知道要时做出哪些元件出来。
观察结果如下:
https://ithelp.ithome.com.tw/upload/images/20210919/201089999S8zDRh6tb.jpg

会发现共有两种不同的Cell:

  1. 包含两个UILabelCell
  2. 包含一个UILabel一个ButtonCell

因此会需要实作两个TableViewCell,马上来实作吧。


建立TableViewCell

这边会先建立包含两个UILabelTableViewCell
那要如何建立TableViewCell呢?跟着以下做看看吧~

Step. 1
https://ithelp.ithome.com.tw/upload/images/20210919/20108999R3wikN8fw2.png

Step. 2
https://ithelp.ithome.com.tw/upload/images/20210919/20108999bAK78UZXja.png

Step. 3 (将这个TableViewCell命名为:「addAlarmContentTableCell」)
https://ithelp.ithome.com.tw/upload/images/20210919/20108999DKfba8uy5m.png

Step. 4 完成


建立完成後内容应该会如下:

class addAlarmContentTableViewCell: UITableViewCell {

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
}

但由於我们是用Code建立的,因此必须要先将里面的 awakeFormNib() & setSelected() 删除,
并该改为以下:

class addAlarmContentTableViewCell: UITableViewCell {

    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

接着就来实作TableViewCell的内容吧!


实作TableViewCell内容

首先建立两个UILabel,一个命名为:titleLabel,另一个为:contentLabel

let titleLabel: UILabel = {
        let label = UILabel()
        label.textColor = .white
        return label
    }()

    let contentLabel: UILabel = {
        let label = UILabel()
        return label
    }()

一样要记得加进 TableViewCell 里面

func setViews() {
        self.addSubview(titleLabel)
        self.addSubview(contentLabel)
    }

然後做Layout

func setLayouts() {
        titleLabel.snp.makeConstraints { make in
            // titleLabel 的顶部跟底部贴齐TableViewCell的顶部跟底部
            make.top.bottom.equalTo(self)
            // titleLabel 的左边距离TableViewCell的左边间隔10
            make.leading.equalTo(self).offset(10)
        }

        contentLabel.snp.makeConstraints { make in
            // contentLabel 的顶部、底部都贴齐TableViewCell
            make.top.bottom.equalTo(self)
            // contentLabel 的右边距离TableViewCell的右边间隔50
            // 为了不跟TableView Accessory重叠
            make.trailing.equalTo(self).offset(-50)
        }
    }

设定完後记得将SetViews() & setLayouts() 加入init()内,然後执行看看吧!
你的画面应该会长下面这样:
https://ithelp.ithome.com.tw/upload/images/20210919/20108999trBsfNpLCR.png

/images/emoticon/emoticon16.gif怎麽画面没变!明明都设定好了呀?

那是因为我们只是将TableViewCell建立出来而已,并没有告知TableView要使用哪个TableViewCell,
那让子弹飞一会儿,明天再来讨论该如何让TableView知道要用哪个TableViewCell吧!/images/emoticon/emoticon01.gif


<<:  想要拿到更多的分红,且无脑的完成任务

>>:  JavaScript入门 Day14_如何使用数字6

【Day25】人力资源篇-Payroll

#odoo #开源系统 #数位赋能 #E化自主 人力资源流程当中大家最关切的应该就是领薪水了! 但是...

[iT铁人赛Day25]练习题(4)

今天来讲第四题练习题罗 其实自己练习到现在,自己的java也有一些些的进步 虽然还是有一些看不懂,甚...

Day20:今天来聊一下Microsoft 365 DLP的识别/监视及自动保护敏感资讯

Microsoft 365 DLP(资料外泄防护)警示将协助我们进行调查找出完整的事件范围。 DLP...

ESP32_DAY6 介绍Arduino

因为有使用到Arduino IDE,再加上今年以前的暑训都是在上Arduino,所以还是特别安排一天...

[Day 30] 应用三:脸部追踪

今天就来看一下人脸辨识 + 物件追踪可以迸出什麽样的火花吧! 本文开始 在applications目...