当前位置: 首页 > 面试题库 >

如何从UITableViewCell类引用UITableViewController?

郑博
2023-03-14
问题内容

我有以下几点:

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

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

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

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


问题答案:

我不会在单元和视图控制器之间创建这种依赖关系-这会使体系结构更加复杂,并且单元不可重用。

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

  • MyCellProtocol使用一种方法创建协议didTapCell,接受UITableViewCell要传递给视图控制器的和/或一些自定义数据
  • 在您的自定义单元格中创建一个公共委托属性: weak var cellDelegate: MyCellProtocol?
  • didTapXXX处理程序或didSelectRowAtIndexPath您的单元格中,调用self.cellDelegate?.didTapCell(),传递期望的参数
  • 在您的视图控制器中,实现 MyCellProtocol
  • cellForRowAtIndexPath您的视图控制器中,当创建/使单元出队时,将其cellDelegate属性设置为self

此时,在单元格中轻按时,将didTapCell调用视图控制器的方法,然后您就可以执行所需的任何操作。

关键是:而不是让单元处理单元的轻击/选择,而是通知视图控制器并让其完成工作。



 类似资料:
  • 问题内容: 我正在扩展ArrayList来创建一个自定义ArrayList,可以在迭代它的同时使用常规ArrayList方法进行修改。为此,我还要创建一个迭代器。 在我的hasNext()和next()方法期间,我需要确保列表没有被修改(可以在任何其他时间修改)。因此,我需要在我的shared()块中引用我的封闭类型。 问题答案: 。因此,在您的情况下,它将为。

  • 问题内容: 我正在尝试向自定义添加提醒,以提出一个我需要从调用presentViewController的提示。但是,我不知道如何从该类访问当前实例。下面的代码是我尝试使用扩展名进行的操作。 我得到这个错误 表达式解析为未使用的函数。 问题答案: 您可以使用此扩展来查找显示单元格的viewController 或用于呈现: Swift 4.2更新 或用于呈现:

  • 我想添加一个自定义的实现到一个。 如果一个本身就是一个,我可以使用视图控制器包含,但它不是。 现在我能做的最好的事情就是将选项卡栏的视图添加到中单元格的: 问题是单元格仅显示的视图,而不显示控件本身。 如何在中显示整个?

  • 对未定义设置的引用: {.}/compile:sourceManaged from{.}/compile:generateConfiguration(...web/project/build.scala:19)您是指compile:sourceManaged吗? {.}/compile:sourceGenerators来自{.}/compile:sourceGenerators(...web/pr

  • 问题内容: 我有一个使用自定义方法连接到xib 的子类。 有没有办法可以在方法中初始化此单元格并仍然重用它?还是我必须使用重用标识符注册类本身? 问题答案: 惯用的NIB流程为: 使用重用标识符注册您的NIB。在Swift 3中 } 在Swift 2中: 定义您的自定义单元格类: class NameInput: UITableViewCell { } 在Interface Builder中创建一