gpt4 book ai didi

ios - 带有 Action 的 UITableViewCell 按钮

转载 作者:IT王子 更新时间:2023-10-29 05:28:03 24 4
gpt4 key购买 nike

您好,我有一个带有三个按钮的自定义 UITableViewCell,用于处理购物车功能、加号、减号和删除按钮,我需要知道触摸了哪个单元格。

我已经尝试过使用“标记解决方案”,但由于细胞的生命周期,它不起作用。

谁能帮我找到解决方案?

提前致谢

最佳答案

我在 UITableViewCell 的子类中使用单元委托(delegate)方法解决了这个问题。

快速概览:

1) 创建协议(protocol)

protocol YourCellDelegate : class {
func didPressButton(_ tag: Int)
}

2) 子类您的UITableViewCell(如果您还没有这样做的话):

class YourCell : UITableViewCell
{
var cellDelegate: YourCellDelegate?
@IBOutlet weak var btn: UIButton!
// connect the button from your cell with this method
@IBAction func buttonPressed(_ sender: UIButton) {
cellDelegate?.didPressButton(sender.tag)
}
...
}

3) 您的 View Controller 符合上面实现的YourCellDelegate协议(protocol)。

class YourViewController: ..., YourCellDelegate {  ... }

4) 设置委托(delegate),在定义单元格之后(用于重用)。

let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! YourCell
cell.cellDelegate = self
cell.btn.tag = indexPath.row

5) 在同一个 Controller 中(您实现的 UITableView 委托(delegate)/数据源在哪里),放置一个来自 YourCellDelegate 协议(protocol)的方法。。 p>

func didPressButton(_ tag: Int) {
print("I have pressed a button with a tag: \(tag)")
}

现在,您的解决方案不依赖于标签/数字。您可以根据需要添加任意数量的按钮,因此无论您要安装多少按钮,您都可以通过委托(delegate)获得响应。

这种协议(protocol)委托(delegate)解决方案在 iOS 逻辑中是首选,它可以用于表格单元格中的其他元素,如 UISwitchUIStepper 等。

关于ios - 带有 Action 的 UITableViewCell 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39947076/

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