ios - 如何从 UITableViewCell 类引用 UITableViewController?

标签 ios cocoa-touch uitableview swift uikit

我有以下内容:

  1. UITableViewController
  2. UITableView
  3. 自定义 UITableViewCell 子类

我为单元格使用了一个 .xib 文件,它是一个 CustomCell 子类。此自定义单元格处理单元格按钮上的某些触摸事件的 IBAction。

我想从单元格中引用 ViewController 及其一些变量。

我应该如何从 UITableViewCell 类访问 UITableViewController?

最佳答案

我不会在单元格和 View Controller 之间创建这种依赖关系 - 这会使架构更加复杂并且单元格不可重用。

我建议您使用委托(delegate)模式,这听起来可能有点复杂 - 尽管您已经在使用(UITableViewDelegate 是一个典型示例):

  • 使用一个方法 didTapCell 创建一个协议(protocol) MyCellProtocol,接受一个 UITableViewCell 和/或您想要传递给 View Controller 的一些自定义数据
  • 在您的自定义单元格中创建一个公共(public)委托(delegate)属性:weak var cellDelegate: MyCellProtocol?
  • 在单元格的 didTapXXX 处理程序或 didSelectRowAtIndexPath 中,调用 self.cellDelegate?.didTapCell(),传递预期的参数<
  • 在你的 View Controller 中,实现MyCellProtocol
  • 在 View Controller 的 cellForRowAtIndexPath 中,在创建/出列单元格时,将其 cellDelegate 属性设置为 self

此时,当在您的单元格中完成点击时,将调用 View Controller 的 didTapCell 方法,您可以从那里执行您需要实现的任何操作。

关键点是:通知 View Controller 并让它完成工作,而不是让单元处理单元点击/选择。

关于ios - 如何从 UITableViewCell 类引用 UITableViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467606/

相关文章:

iOS - Swift - heightForRowAtIndexPath "rubber-banding"问题

ios - 如何在 iOS 上访问创建的 pdf 文档?

ios - 屏幕旋转后如何调用sizeForItemAtIndexPath方法

ios - Objective-C中的“发现扩展时遇到的错误”

ios - 从 Alamofire 错误中获取响应数据

objective-c - 在登录页面获取用户 ID

ios - tableView 中不显示评论

iphone - 结合 UITabBarController 和 UINavigationController

ios - CapsPageMenu 隐藏 TableView 上的 NavigationBar 从子 UIViewController 滚动不工作

ios - 当调用某些函数时变量消失