2015-10-18 69 views
0

我是swift新手,所以我很難理解可能非常簡單的事情。Swift Xcode使用複選框子類將操作附加到複選框

我想在每週的每一天都有複選框,並且能夠將它們的狀態有點像標準Apple時鐘應用程序鬧鐘重複頁面一樣切換。我正在使用從https://github.com/kenthinson/checkbox/借來的子類來創建一組複選框。所有這些都像故事板中的魅力一樣,但現在我正在爲如何在視圖控制器中引用子類複選框「狀態」而苦苦掙扎,以實際執行某些操作。

因此,這裏的子類:

import UIKit 

class checkBox: UIButton { 

//images 
let checkedImage = UIImage(named: "checkBoxChecked") 
let unCheckedImage = UIImage(named: "checkBoxUnchecked") 

//bool property 
var isChecked:Bool = false{ 
    didSet{ 
     if isChecked == true{ 
      self.setImage(checkedImage, forState: .Normal) 
     }else{ 
      self.setImage(unCheckedImage, forState: .Normal) 
     } 
    } 
} 


override func awakeFromNib() { 
    self.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside) 
    self.isChecked = false 
} 



func buttonClicked(sender:UIButton) { 
    if(sender == self){ 
     if isChecked == true{ 
      isChecked = false 
     }else{ 
      isChecked = true 
     } 
    } 
} 

} 

下面是一個插座例如:

@IBOutlet weak var sun: checkBox! 

這裏是我的空數組準備追加(工作):

var daysArray:[String] = [] 

以下是一個示例操作:

@IBAction func setSunday(sender: checkBox) { 
    if (****what do I do here to retrieve the button state?****) { 
     daysArray.append("0") 
     print(daysArray) // Check the array is working then delete 
    } else { 
     daysArray.removeAtIndex(0) 
     print(daysArray) // Check the array is working then delete 
    } 
} 

如果我能得到這個工作,那麼我可以申請到一週中的所有日子,並使用NSUserDefaults使數組的狀態持久化。 希望你們能幫忙。

回答

0

使用sender.isChecked找回狀態:

@IBAction func setSunday(sender: checkBox) { 
    if sender.isChecked { 
     daysArray.append("0") 
     print(daysArray) // Check the array is working then delete 
    } else { 
     daysArray.removeAtIndex(0) 
     print(daysArray) // Check the array is working then delete 
    } 
} 
+0

謝謝瑪麗安。我以爲我曾經嘗試過,但我不應該把語法說得很對。 – user3118171

+0

現在我意識到這個概念不會工作,因爲索引會隨着連續的按鈕點擊而改變。回到繪圖板。 – user3118171