其實這邊在顯示預設人數的時候(成人: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)
}
}