如何从 UiTableViewController 访问自定义 UITableViewCell 的属性?

Posted

技术标签:

【中文标题】如何从 UiTableViewController 访问自定义 UITableViewCell 的属性?【英文标题】:How to access properties on a custom UITableViewCell from a UiTableViewController? 【发布时间】:2012-10-29 03:35:04 【问题描述】:

我正在尝试从 UitableViewController 类访问自定义 UiTableViewCell(子类 UITableViewCell)上的标签属性。例如,我有 heightForRowAtIndexPath 方法,我需要访问标签。

这是我的代码:

- (CGFloat)tableView:(UITableView *)tv heightForRowAtIndexPath:(NSIndexPath *)indexPath 

   // I need access to the custom UITableView Cell property here


有什么建议吗?甚至可以在 uiviewcontroller 中声明 outlet 并将其链接到自定义 uitableviewcell 上的标签?

谢谢

【问题讨论】:

【参考方案1】:

要从heightForRowAtIndexPath: 访问单元格,请检查以下内容:

How to get the cell object in tableView:(UITableView *)tableView heightForRowAtIndexPath function? UITableView flexible/dynamic heightForRowAtIndexPath

如果需要在初始化后访问单元格的标签,则需要在自定义 UITableViewCell 类中的标签中添加tag,您可以通过以下方式访问标签:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: @"cell"];
    UILabel *cellLabel = (UILabel *)[cell viewWithTag: 1];

【讨论】:

但这如何为您提供tableView:heightForRowAtIndexPath: 方法中的单元格?这将需要从单元格中访问标签。 我已经更新了对一些可能有助于从 heightForRowAtIndexPath: 方法访问的链接的回答【参考方案2】:

高度计算应该使用来自数据模型的数据,而不是视图。请记住,单元格是使用数据模型中的数据创建的。

您不能调用[tv cellForRowAtIndexPath:indexPath],因为这会导致tableView:cellForRowAtIndexPath: 和此tableView:heightForRowAtIndexPath: 方法之间的无限递归。

您可以尝试直接调用 tableView:cellForRowAtIndexPath: 方法来获取单元格,但这可能会产生不良副作用。

【讨论】:

以上是关于如何从 UiTableViewController 访问自定义 UITableViewCell 的属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何从包含我的 UIViewController 的 UITableViewController 显示新视图?

如何将数据从 uitableviewcontroller 发送到 uitableviewcell

如何从 UITableViewController 中的静态单元格获取 textFields?迅速

如何从 Modal ViewController 重新加载父 UITableViewController 中的数据

如何从另一个 UIViewController 重新加载 UITableViewController

如何从 UIViewController 传递变量来委托 UITableViewController