2015-10-18 2 views
0

Я новичок в быстром, поэтому я озадачен тем, что, вероятно, очень просто.Swift Xcode присоединяет действие к флажку с помощью флагового подкласса

Я хочу иметь флажки для каждого дня недели и быть в состоянии переключать их состояния немного как стандартная страница повторения сигнала тревоги приложения Apple. Я использую подкласс, заимствованный из https://github.com/kenthinson/checkbox/, для создания набора флажков. Все, что работает как прелесть в раскадровке, но теперь я борюсь с тем, как обращаться к подклассу «state» в моем контроллере, чтобы на самом деле что-то делать.

Так вот подкласс:

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

Смежные вопросы