Keep UIButton Selected/Highlighted after touch Keep UIButton Selected/Highlighted after touch swift swift

Keep UIButton Selected/Highlighted after touch


Use below code declare isHighLighted as instance variable

//write this in your class var isHighLighted:Bool = falseoverride 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        }     });}

I would recomend to use selected state instead of highlighted the below code demonstarate with selected state

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;}


func buttonPressed(_ sender: UIButton) {    // "button" is a property    if button.isSelected {        button.setImage(UIImage(named: "filled-heart"), for: .normal)        button.isSelected = false    }else {        button.setImage(UIImage(named: "empty-heart"), for: .selected)        button.isSelected = true    }}


func highlightButton(button: UIButton) {       button.highlighted = true}@IBAction func touched(sender: UIButton) {    let timer = NSTimer.scheduledTimerWithTimeInterval(0.0, target: self, selector: Selector("highlightButton(sender)"), userInfo: nil, repeats: true)}