gpt4 book ai didi

ios - Swift 3.0 如何使用 TableView 单元格更改按钮标题

转载 作者:行者123 更新时间:2023-11-28 15:24:19 26 4
gpt4 key购买 nike

我有一个带有子类 TableView 单元格的 TableView 。我附加了一个按钮并将其连接到表格 View 单元格的 VC。我希望按钮在加载时说“添加”,单击时说“减去”,再次单击时返回“添加”。但是我无法理解如何将行号与按钮状态相关联。

带有 TableView 的 VC:

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

if (searchActive) {
cell.textLabel?.text = filtered[indexPath.row]
} else {
cell.textLabel?.text = data[indexPath.row]
}

return cell
}

func didPressButton(cell: TVCell) {

guard let indexPath = self.tableView.indexPath(for: cell) else {
return
}

print("Button tapped on row \(indexPath.row)")
}

表格 View 单元格的 VC:

protocol TVCellDelegate : class {
func didPressButton(cell: TVCell)
}

class TVCell: UITableViewCell {

@IBOutlet weak var addButton: UIButton!

weak var cellDelegate: TVCellDelegate?

override func prepareForReuse() {
super.prepareForReuse()
self.cellDelegate = nil
}

// connect the button from your cell with this method
@IBAction func buttonPressed(sender: UIButton) {
self.cellDelegate?.didPressButton(cell: self)
}
}

最佳答案

将按钮的状态存储在 View Controller 中,并在重复使用和按下按钮后更改文本。

带有 TableView 的 VC:

var isSubtracting = [IndexPath: Bool]()

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

if isSubtracting[indexPath] ?? false {
cell.addButton.setTitle("Add", for: .normal)
} else {
cell.addButton.setTitle("Subtract", for: .normal)
}

cell.indexPath = indexPath

if(searchActive) {
cell.textLabel?.text = filtered[indexPath.row]
} else {
cell.textLabel?.text = data[indexPath.row]
}

return cell
}

func didPressButton(indexPath: IndexPath) {
guard let cell = tableView.cellForRow(at: indexPath) as? TVCell else {
return
}

if isSubtracting[indexPath] ?? false {
isSubtracting[indexPath] = false
cell.addButton.setTitle("Subtract", for: .normal)
} else {
isSubtracting[indexPath] = true
cell.addButton.setTitle("Add", for: .normal)
}
}

表格 View 单元格的 VC:

protocol TVCellDelegate : class {
func didPressButton(indexPath: IndexPath)
}

class TVCell: UITableViewCell {
@IBOutlet weak var addButton: UIButton!

weak var cellDelegate: TVCellDelegate?

var indexPath: IndexPath!

override func prepareForReuse() {
super.prepareForReuse()
self.cellDelegate = nil
}

// connect the button from your cell with this method
@IBAction func buttonPressed(sender: UIButton) {
self.cellDelegate?.didPressButton(indexPath: indexPath)
}
}

关于ios - Swift 3.0 如何使用 TableView 单元格更改按钮标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45487465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com