我正在使用UITableViewCell的子类中的单元委托方法解决此问题。
快速概述:
1) 创建一个协议
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) 让 您的视图 控制器 符合
YourCellDelegate上面实现的协议。
class YourViewController: ..., YourCellDelegate { ... }
4) 在定义了单元之后(用于重用), 设置一个委托 。
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! YourCellcell.cellDelegate = selfcell.btn.tag = indexPath.row
5) 在同一控制器(您实现的UITableView委托/数据源在哪里)中, 放置来自YourCellDelegate
protocol
的方法。
func didPressButton(_ tag: Int) { print("I have pressed a button with a tag: (tag)")}
现在,您的解决方案不再取决于标签/数字。您可以根据需要添加任意数量的按钮,因此无论您要安装多少个按钮,都可以通过委托获得响应。
此协议代理解决方案在iOS逻辑中是首选,它可用于表单元格中的其他元素,例如
UISwitch,
UIStepper等等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)