如何从 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:
访问单元格,请检查以下内容:
如果需要在初始化后访问单元格的标签,则需要在自定义 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 中的数据