Swift: Change the cell's UIButton Image With tableView DidSelect method

前端 未结 3 1646
有刺的猬
有刺的猬 2020-12-07 00:26

I Have TableView with the two label and one UIButton inside the Tableview. So on DidSelect method i want to change the UIButton<

相关标签:
3条回答
  • 2020-12-07 00:40

    you need to first set button tag in cellForRow method

    after in didSelectRowAtIndexPath method you need to set image of button and in didDeselectRowAtIndexPath set unselect image in button.

    you can set button image by using :

    playButton.setImage(UIImage(named: "play.png"), forState:UIControlState.Normal)
    
    0 讨论(0)
  • 2020-12-07 00:55

    Check This

    import UIKit
    
    class ButtonTblViewController: UIViewController,UITableViewDelegate, UITableViewDataSource {
    
        var arry = ["Montitanki Chowk","Greenland Chokdi"]
        var SelectData = [NSMutableDictionary]()
    
        @IBOutlet weak var tbleVw: UITableView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            for i in 0..<arry.count
            {
                self.SelectData.append(["data":arry[i],"isSelect":"NO"])
            }
    
            self.tbleVw.reloadData()
            // Do any additional setup after loading the view.
        }
    
        // MARK - tableView Delegates
    
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return SelectData.count
        }
    
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell:listTble = tableView.dequeueReusableCell(withIdentifier: "CellID", for: indexPath as IndexPath) as! listTble
            cell.lblTit.text =  self.SelectData[indexPath.row].value(forKey: "data") as? String
    
            cell.btnRdo.tag = indexPath.row
            let tapgesture = UITapGestureRecognizer(target: self , action: #selector(self.sectionTapped(_:)))
            cell.btnRdo.addGestureRecognizer(tapgesture)
    
            let selData = self.SelectData[indexPath.row].value(forKey: "isSelect") as! NSString
    
            if selData == "NO" {
                cell.btnRdo.setImage( UIImage(named: "btnUnSel"), for: .normal)
            } else {
                cell.btnRdo.setImage( UIImage(named: "btnSel"), for: .normal)
            }
    
            return cell
        }
    
        @objc func sectionTapped(_ sender: UITapGestureRecognizer){
            if(self.SelectData[(sender.view?.tag)!].value(forKey: "isSelect") as! String == "NO"){
                self.SelectData[(sender.view?.tag)!].setValue("YES", forKey: "isSelect")
            }else{
                self.SelectData[(sender.view?.tag)!].setValue("NO", forKey: "isSelect")
            }
            self.tbleVw.reloadData()
        }
    
        /*
         // MARK: - Navigation
    
        // In a storyboard-based application, you will often want to do a little preparation before navigation
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            // Get the new view controller using segue.destination.
            // Pass the selected object to the new view controller.
        }
        */
    
    }
    
    class listTble: UITableViewCell {
        @IBOutlet weak var lblTit: UILabel!
        @IBOutlet weak var btnRdo: UIButton!
    }
    

    Out Put

    0 讨论(0)
  • 2020-12-07 01:04
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    
            guard let btn = (tableView.cellForItem(at: indexPath) as! yourCellName).button else {
                return
            }
            btn.setImage(UIImage(named: "yourSelectedImage name"), for: .normal)
        }
        func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
            guard let btn = (tableView.cellForItem(at: indexPath) as! yourCellName).button else {
                return
            }
            btn.setImage(UIImage(named: "yourNotSelectedImagename"), for: .normal)
        }
    
    0 讨论(0)
提交回复
热议问题