如何在tableVIewCell上选择时更改UIButton的图像。在Swift 3中

时间:2017-09-11 06:52:51

标签: ios swift

我在tableview单元格上实现了一个不喜欢的按钮但无法更改按钮的图像。任何人都可以帮助我使用swift 3

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {


    @IBOutlet weak var tableView: UITableView!
    var array: [String] = ["A","B","C","D","E","F"]
    override func viewDidLoad() {
        super.viewDidLoad()

    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return array.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell: cell_TableTableViewCell = self.tableView.dequeueReusableCell(withIdentifier: "cell_TableTableViewCell") as UITableViewCell! as! cell_TableTableViewCell!

            cell.textLabel?.text = array[indexPath.row]

        cell.button_Outlet.tag = indexPath.row
        cell.button_Outlet.addTarget(self, action: "LikePressed", for: .touchUpInside)

        return cell
    }

}


func LikePressed(sender : UIButton){

    sender.isSelected = !sender.isSelected    
}

4 个答案:

答案 0 :(得分:1)

在设计自定义单元格时,您可以为该按钮添加不同状态的图像

  1. 默认
  2. 选择的
  3. 为该按钮添加选择器时,在该选择器中只需更改按钮的选择状态

    即可
    func buttonTapped(sender : UIButton){
    
            sender.isSelected = !sender.isSelected
    
    
    }
    

答案 1 :(得分:0)

  1. IB将UIButton引入您的单元类(例如TableViewCell)。
  2. 在ViewController类中编写一个方法来检测buttonTap。 例如:

    func dislikeTapped(_ sender:UIButton){     //将所需图像设置为发件人 }

  3. 在TableView-CellForRow方法中,将目标添加到单元格中的按钮。 例如:

    cell.dislikeButton.addTarget(self,action:#selector(self.dislikeTapped(_ :),for:.touchUpInside)

答案 2 :(得分:0)

这非常简单,例如您的按钮来自情节提要。添加使其成为自定义按钮

1),然后在cellForRowAt indexPath:中添加标记值。

2)并为该按钮设置两个图像。

3)最后修复选定的状态。

查看我的代码

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell: cell_TableTableViewCell = self.tableView.dequeueReusableCell(withIdentifier: "cell_TableTableViewCell") as UITableViewCell! as! cell_TableTableViewCell!

        cell.textLabel?.text = array[indexPath.row]
    //Step 1
    cell.button_Outlet.tag = indexPath.row
    cell.button_Outlet.addTarget(self, action: "LikePressed", for: .touchUpInside)
    //Step 2
    cell.button_Outlet.setImage(UIImage(named: "LikeImage"), for: .selected)
    cell.button_Outlet.setImage(UIImage(named: "DisLikeImage"), for: .selected)
    return cell
}

//Step 3
func btnPressed(sender:UIButton) {
    if sender.isSelected == false {
        sender.isSelected = true
    } else {
       sender.isSelected = false
    }
}

答案 3 :(得分:0)

您还需要创建一个数组来维护按钮的状态,因为当您滚动屏幕上不可见的单元格时,它们会从内存中删除,因此如果不保持其状态,它们又会从可见的单元中出队。将使用您从中出队的单元格的属性。

didFinishLaunchingWithOptions