iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0

XIB

在開發的過程中偶爾我們會遇到一些經常重複出現的元件,但是每次都一個個調設定不僅容易有失誤,更顯得麻煩,所以運用 XIB 就能夠避免掉這些,這邊會用 TableViewCell 作為範例

首先先建立 TableViewCell 的 XIB
https://ithelp.ithome.com.tw/upload/images/20201002/20129677gS488Zp5KL.png

勾選 Also create XIB file
https://ithelp.ithome.com.tw/upload/images/20201002/20129677ZdSKYqwlHa.png

接著就會多一個 .swift 及 .xib 的檔案
https://ithelp.ithome.com.tw/upload/images/20201002/20129677FZyfBlajIK.png

打開 xib 檔就能和設計 Storyboard 一樣設計我們的 cell
https://ithelp.ithome.com.tw/upload/images/20201002/20129677P3gA1ggCdg.png

這裡我放了一個 Label 和 Button
https://ithelp.ithome.com.tw/upload/images/20201002/20129677Syaqq0LCwo.png

再來跟 Storyboard 一樣,將 @IBOutlet 建立在 .swift 檔內
https://ithelp.ithome.com.tw/upload/images/20201002/201296773Gz7P48YtQ.png

回到 ViewController ,跟以前教的一樣建立 TableView ,指涉這次在設置 cell 時我們要用我們自己的檔案

在 cellForRowAt 的 Function 內輸入以下程式碼,用來開啟我們自訂的 cell

let cell = Bundle.main.loadNibNamed("CustomCell", owner: self, options: nil)?.first as! CustomCell

設置 cell 的元素並 return cell

cell.cellLabel.text = "\(indexPath)"

return cell

先來看看目前的成果
https://ithelp.ithome.com.tw/upload/images/20201002/201296773MejkQXgnQ.png

再來我們要幫 Button 加上事件,如果 Button 的事件不會用到 ViewController 內的參數,就能直接將 @IBAction 加在 .swift 檔案內,但如果會使用到 ViewController 內的參數就要另尋方法

首先建立一個 @objc 的 Function ,用來表示 Button 被案下的事件

@objc func cellBtnClick(_ sender: UIButton) {
    sender.backgroundColor = .red
}

再來在設置 cell 時幫 Button 加上 Target

cell.cellButton.addTarget(self, action: #selector(self.cellBtnClick), for: .touchUpInside)

這樣就完成了來看一下成果
https://ithelp.ithome.com.tw/upload/images/20201002/20129677TAX3ingihL.png


上一篇
Day22 頁面間傳值
下一篇
Day24 Local Push Notification
系列文
IOS Beginner's 30days 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言