iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0

前文

昨天教大家怎麼讓點擊cell時可以出現勾勾
那今天就是把我點擊的week 回傳到A畫面

排序

然後我想要數字由小排到大然後0固定再最後一個
所以我使用sort() 裡面是一個closure

num1 跟 num2 是要比較的元素
如果num1 是 0 就將 num1 排在 num2 後面 反之
最後如果都不是0 那就由小排到大
https://ithelp.ithome.com.tw/upload/images/20230824/20161845CXcvFLO0LR.png
這邊是我想讓傳送的值可以好看一些
先設個全域變數 saveWeek 這邊應該都很好了解就不多說明了
https://ithelp.ithome.com.tw/upload/images/20230824/20161845IE2hpVe2LT.png

Protocol

簡單來說就是一個協定 讓別人去做我想做的事情
通常會搭配extension去使用

Extension

簡單說就是裝插件的意思
原本ViewController沒辦法做的 但是你去擴展他
就能做原本不能做的事情

protocol 傳值

在B畫面寫一個protocol 然後定義一個func 會接收一個參數
這邊的function只需要定義 不用寫其他功能

https://ithelp.ithome.com.tw/upload/images/20230916/20161845ESLhHeWiW3.png

然後定義一個變數 遵循剛剛創好的協定

https://ithelp.ithome.com.tw/upload/images/20230916/20161845GNShYia1rJ.png
viewWillDisappear就是在ViewController要消失時會執行的func
sendWeekToDelegate是剛剛定義的變數
因為他遵循的protocol裡面有定義一個func
就可以拿來用 裡面就是帶我要傳的值

https://ithelp.ithome.com.tw/upload/images/20230916/20161845lAJeJAClbx.png

extension 擴展

這邊就是讓A畫面能去用B畫面的protocol
然後在extension裡我們就要去寫這個func要做的事情
這邊我是多創一個Label 然後把值存到Label裡
https://ithelp.ithome.com.tw/upload/images/20230916/2016184584Gbe3Q4Ak.png
然後在剛剛要跳到B畫面的function
寫一行將protocol的代理設為自己
https://ithelp.ithome.com.tw/upload/images/20230916/20161845moKSRtIFAM.png
簡單的protocol傳值就完成了
https://ithelp.ithome.com.tw/upload/images/20230824/20161845DSD4DtF7g0.png

結尾

今天教了protocol 跟 extension的用法
在swift很常使用到的 所以大家要真的懂它的概念/images/emoticon/emoticon12.gif


上一篇
Day23 UserNotifications通知
下一篇
Day25 API介紹
系列文
Xiang教你入門Swift從零到有30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言