从自定义单元格访问父视图
Posted
技术标签:
【中文标题】从自定义单元格访问父视图【英文标题】:Access parent view from custom cell 【发布时间】:2011-02-24 07:17:08 【问题描述】:如何从该表中的自定义单元格访问我拥有 UITableView 的 UIView。我找不到这样做的方法。 谢谢
【问题讨论】:
【参考方案1】:您可以添加一个指向 UITableView 的实例变量,并在创建/配置单元格时设置它(例如在 tableView:cellForRowAtIndexPath: 中)。确保您的单元格不保留 tableView。 知道了你的cell的tableView,调用[parentTableView superView]来访问UITableView的父视图:
@interface PropertyListingCell : UITableViewCell
__weak id parentTableView;
- (void) setParentTableView:(UITableView*)tv; // parentTableView = tv;
在 UITableViewController 实现中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
//dequeue/create and configure your custom cell here
[cell setParentTableView:tableView];
return cell;
更新:
如果您使用的是最近的 XCode(至少 4.3),您可以简单地添加
@property (weak) UITableView *parentTableView; // use unsafe_unretained instead of weak if you're targeting ios 4.x
到 UITableViewCell 子类的 @interface
部分。然后,当您创建单元格时(在tableView:cellForRowAtIndexPath:
中)相应地设置此属性:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
// ...
//dequeue/create and configure your custom cell here
// ...
cell.parentTableView = tableView;
return cell;
然后在你的单元格类中调用self.parentTableView
来访问这个单元格所属的tableView。
【讨论】:
感谢您的回复,但您能向我解释一下这是怎么回事 --------- @interface PropertyListingCell : UITableViewCell __weak id parentTableView; - (void) setParentTableView:(UITableView*)tv; // parentTableView = tv; 顶部块中的代码显示了您必须添加到自定义 UITableViewCell 头文件(例如 MyTableViewCell.h)的内容。(id) parentTableView;
基本上是一个指向自定义表格单元格实现中的tableView 的指针。 setParentTableView
是一种将指针设置为表格视图的方法 - 您应该将其添加到自定义表格单元格实现中(例如 MyTableViewCell.m)。现在,当您在 UITableViewController 子类中创建自定义单元格的实例时,您调用单元格的 setParentTableView
方法并设置指向该单元格所属的 UITableView 的指针。以上是关于从自定义单元格访问父视图的主要内容,如果未能解决你的问题,请参考以下文章