użycia poniżej kodu zadeklarować isHighLighted
jako przykład zmiennej
//write this in your class
var isHighLighted:Bool = false
override func viewDidLoad() {
let button = UIButton(type: .system)
button.setTitle("Your title", forState: UIControlState.Normal)
button.frame = CGRectMake(0, 0, 100, 44)
self.view.addSubview(button as UIView)
button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
}
func buttonClicked(sender:UIButton)
{
dispatch_async(dispatch_get_main_queue(), {
if isHighLighted == false{
sender.highlighted = true;
isHighLighted = true
}else{
sender.highlighted = false;
isHighLighted = false
}
});
}
Polecam użyć selected
stanu zamiast highlighted
poniżej kod demonstarate w stanie wybranym
override func viewDidLoad() {
let button = UIButton(type: .system)
button.setTitle("Your title", forState: UIControlState.Normal)
button.frame = CGRectMake(0, 0, 100, 44)
self.view.addSubview(button as UIView)
//set normal image
button.setImage(normalImage, forState: UIControlState.Normal)
//set highlighted image
button.setImage(selectedImage, forState: UIControlState.Selected)
button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
}
func buttonClicked(sender:UIButton)
{
sender.selected = !sender.selected;
}
Nie widzę, gdzie w kodzie zadeklarowałeś "isHighLigthed". Widzę, gdzie sprawdzasz wartość "isHighLighted", ale nie tam, gdzie faktycznie deklarujesz to – dcbenji
zadeklaruj to po 'class Abc {' line 'var isHighLighted: Bool = false'. To będzie działać idealnie – codester
@ user3822654 you van również używaj wybranych stan, ponieważ jest bardziej używany do przełączania zachowań.Należy ustawić dwa obrazy jeden dla 'normalState' inny dla' selectedState' .Opierają się, że to pomaga – codester