Swift: изменение изображения ячейки UIButton с помощью метода tableView DidSelect - PullRequest
0 голосов
/ 22 января 2019

У меня есть TableView с двумя метками и одним UIButton внутри таблицы. Итак, на методе DidSelect я хочу изменить UIButton изображение этой конкретной ячейки. Как прикрепить изображение.

enter image description here

Ответы [ 3 ]

0 голосов
/ 22 января 2019

вам нужно сначала установить метку кнопки в cellForRow методе

после использования метода didSelectRowAtIndexPath необходимо установить изображение кнопки и в didDeselectRowAtIndexPath установить отмену выбора изображения в кнопке.

Вы можете установить изображение кнопки, используя:

playButton.setImage(UIImage(named: "play.png"), forState:UIControlState.Normal)
0 голосов
/ 22 января 2019

Проверьте это

enter image description here

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

enter image description here

0 голосов
/ 22 января 2019
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)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...