Hier ist die Lösung whic passen deine Bedürfnisse sind besser. Hier
ist die Klasse Auswahltaste:
class SelectionButton: UIButton {
override var selected: Bool {
didSet {
if self.selected {
self.backgroundColor = UIColor.greenColor()
}
else {
self.backgroundColor = UIColor.redColor()
}
}
}
}
und der Code, der eine Schaltfläche Instanz programmatisch erstellen wird:
@IBAction func createSelButton(sender: AnyObject) {
let myButton = SelectionButton()
myButton.frame = CGRect(x: 100, y: 200, width: 200, height: 25)
self.view.addSubview(myButton)
myButton.setTitle("My Selection Button", forState: UIControlState.Normal);
myButton.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
myButton.addTarget(self, action: "clickButton:", forControlEvents: UIControlEvents.TouchUpInside)
}
und schließlich Clickfunktion durch den Wähler zeigte:
func clickButton(sender: SelectionButton) {
sender.selected = !sender.selected
}
Bitte beachten Sie, dass die Slector-Syntax in der neuesten Version von Swift geändert wurde.
Wie bereits erwähnt, ich tue dies eine benutzerdefinierte Klasse namens SelectionButton . Wenn ich UIButton durch SelectionButton in Zeile 1 ersetze, bekomme ich Fehler, weil UIColor ein unaufgelöster Bezeichner ist (was für mich keinen Sinn ergibt ... da SelectionButton eine Unterklasse von UIButton ist) – user3246092
Ich habe das gerade versucht ... Ich habe ein: class SelectionButton: UIButton {...} und lege den Code aus der Erweiterung in diese neuen Klassen. Keine Probleme mit UIColor. Ich empfehle Ihnen, die Importliste zu überprüfen ... – tosha
Ich bekomme "Kann nicht zuweisen Eigenschaft: Sender ist eine 'Let' Konstante." Ich schaute nach oben, keine Lösung kam heraus. Immer noch – user3246092