我在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
}
答案 0 :(得分:1)
在设计自定义单元格时,您可以为该按钮添加不同状态的图像
为该按钮添加选择器时,在该选择器中只需更改按钮的选择状态
即可func buttonTapped(sender : UIButton){
sender.isSelected = !sender.isSelected
}
答案 1 :(得分:0)
在ViewController类中编写一个方法来检测buttonTap。 例如:
func dislikeTapped(_ sender:UIButton){ //将所需图像设置为发件人 }
在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