iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
自我挑戰組

30天Swift純Code之旅 - 鬧鐘篇系列 第 9

Swift純Code之旅 Day9. 「TableView(1) - TableView Cell內容製作」

  • 分享至 

  • xImage
  •  

前言

昨天已經將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


上一篇
Swift純Code之旅 Day8. 「TableView製作複習」
下一篇
Swift純Code之旅 Day10. 「TableView(2) - TableView Cell註冊」
系列文
30天Swift純Code之旅 - 鬧鐘篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言