大家好 StackOverflow 今天我快速為大家帶來了一個優化問題
如螢屏截圖所示,我的螢屏中有復選框,我必須根據是否單擊它們來保存它們的值(如果檢查為真,否則為假)就我的問題而言,我解決了視覺部分,我將每個按鈕連接到一個單個事件處理程式并根據單擊更改其影像,如下所示
@IBAction func checkBtnpressed(_ sender: UIButton) {
if sender.image(for: .normal) == UIImage(named: "imgCheckSelected") {
sender.setImage(UIImage(named: "ImgcheckBox"), for: .normal)
}else{
sender.setImage(UIImage(named: "imgCheckSelected"), for: .normal)
}
}
但我無法找到設定它們的真偽值的方法,我不想定義 15 個單獨的值所以我的問題是我可以只用一個布林值解決這個問題我可以使用 sender 將每個按鈕設定為真或false 取決于單擊的時間或其他任何內容。請幫我找到解決方案
uj5u.com熱心網友回復:
您定義的每個按鈕都可以保持復選框的狀態。您需要使用按鈕的正常和選定狀態。
private lazy var btnClick:UIButton = {
var btn = UIButton()
btn.setImage(UIImage(named: "ImgcheckBox"), for: .normal)
btn.setImage(UIImage(named: "imgCheckSelected"), for: .selected)
btn.addTarget(self, action: #selector(self. checkBtnpressed(btn:)), for: .touchUpInside)
return btn
}()
@objc func checkBtnpressed(btn: UIButton) {
btn.isSelected = !btn.isSelected
}
現在,當您需要所有選定的復選框時,只需遍歷您的按鈕并選擇 isSelected 屬性為 true 的值。
uj5u.com熱心網友回復:
UIButton 有幾種狀態。您已經發現了其中一種.normal。按鈕可以處于的另一種狀態是.selected。因此,您可以將選定狀態UIImage(named: "imgCheckSelected")的影像設定為 ,將正常狀態的影像設定為UIImage(named: "ImgcheckBox")。
一旦你這樣做了,在你的checkBtnpressed(_:)方法中,你所要做的就是改變按鈕的狀態。稍后,您可以查詢按鈕的狀態以確定它是否被選中。
也就是說,你真的應該在某種模型物件中表示你的狀態,其中要么有 15 個布林值,要么有一個布林值陣列。不要將您的視圖狀態用作您的模型。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/481924.html
