swift - 如何将数据从表格视图单元类传递回带有表格视图的视图控制器?
问题描述
我有一个带有 tableView 和自定义单元格的视图控制器。我想学习如何设置它,以便在单击 tableviewCells 中的按钮时,它们可以操作具有 tableview 的视图控制器中的元素。
感谢有帮助的贡献者,我了解到答案是有两种方法可以让从 tableViewCell 自定义单元格类中单击按钮与具有 tableView 的 viewController 交互。您可以使用委托/协议,也可以使用闭包。我提供了一个指向 YouTube 视频的链接,该视频解释了 Delegate 方法作为我自己下面问题的答案,下面的另一张海报提供了一个非常简洁的使用闭包的示例。
解决方案
使用闭包将按钮操作从单元格回调到视图控制器。
自定义单元
class CustomCell : UITableViewCell {
var ClousureBtnActionHandler:((_ sender: AnyObject) -> Void)?
@IBAction func btnInfoActionHandler(_ sender : AnyObject) {
if self.ClousureBtnActionHandler != nil {
self.ClousureBtnActionHandler!(sender)
}
}
}
视图控制器
表视图数据源
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell : CustomCell = tableView.dequeueReusableCell(withIdentifier: "CustomCell") as! CustomCell
cell.ClousureBtnActionHandler = { sender in
print("Do any thing with your button action")
}
}
推荐阅读
- python - 使用 Bluez-obex 和 pydbus 的 Python opp obex 服务器?
- mongodb - MongoDB 服务器接受服务器证书作为客户端证书
- feature-engineering - Scikit-Learn Pipeline 中的新功能 - 两个现有功能之间的交互
- java - 如何在没有 ArgumentCapture 的测试中从方法中获取随机生成的参数?
- sql - 如何仅使用键号 id 获取 jsonb 数据的值?
- django - 请求通过 Zappa 部署在 AWS Lambda 中的 Django 应用程序花费的时间太长
- php - Laravel - 子域路由无法按预期工作
- python - 对于多输入模型,什么是 tf.data.Dataset.from_tensor_slices 的替代方法?
- go - 如何每次从列表中选择一个随机数
- css - Zurb Foundation 在 iOS 上显示模式