iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 13
0

其實這邊在顯示預設人數的時候(成人:1, 小孩以及嬰兒為0),減的按鈕要做一個反灰的動作,但是這裡我卡住惹一直有個地方有問題,所以這篇要來繼續完成人數增減的部分。

最後經指導決定直接使用 didSet 來觀察圖片要顯示哪一張,也能使code更加簡潔。

計算人數且觀察反灰圖片出現時機:

    @IBOutlet weak var greyMinus: UIButton!
    
    @IBOutlet weak var numOfAdultsLabel: UILabel!
    
    var defaultAdults = 1 {
        didSet {
            if defaultAdults == 1 {
                greyMinus.setImage(UIImage(named: "icons8-minus-50"), for: .normal)
                greyMinus.adjustsImageWhenHighlighted = false
            }
            else {
                greyMinus.setImage(UIImage(named: "icons8-minus-50-3"), for: .normal)
            }
            
            numOfAdultsLabel.text = "\(defaultAdults)"
        }
    }
    
    @IBAction func minusAdults(_ sender: UIButton) {
        if defaultAdults == 1 {
            return
        }      
        defaultAdults -= 1
    }
    
     @IBAction func plusAdults(_ sender: UIButton) {
        defaultAdults += 1
    }
    

記錄一下問題:在原本程式碼中當成人人數為 2 時,減的按鈕能夠順利變成橘色; 但當人數為 1 時卻需要按兩次才能得到反灰的減數按鈕。

原先程式碼:

    @IBOutlet weak var greyMinus: UIButton!
    @IBOutlet weak var numOfAdultsLabel: UILabel!

    var defaultAdults = 1

    @IBAction func minusAdults(_ sender: UIButton) {

        if defaultAdults == 1 {
            //minus cannot work
            greyMinus.setImage(UIImage(named: "icons8-minus-50"), for: .normal)
        }
        else if defaultAdults > 1{
            defaultAdults -= 1
            //這裡忽略了defaultAdults值實際上為還沒按下減鈕前的值,因此是進到這個條件式(進來之後才做減一的動作),所以在這裡還要加上這段判斷式
            if defaultAdults == 1{
                greyMinus.setImage(UIImage(named: "icons8-minus-50"), for: .normal)
            }
            //以上
            numOfAdultsLabel.text = "\(defaultAdults)"
        }
    }
    @IBAction func plusAdults(_ sender: UIButton) {
        defaultAdults += 1
        numOfAdultsLabel.text = "\(defaultAdults)"
        if defaultAdults > 1 {
            greyMinus.setImage(UIImage(named: "icons8-minus-50-3"), for: .normal)
        }
    }

上一篇
Day 12 - Jetstar 人數增減
下一篇
Day 14 - Jetstar 分段控制 (Segmented Control)
系列文
Swift 新手上路之30天復刻版型30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言