从自定义单元格访问父视图

时间:2011-02-24 07:17:09

标签: iphone uitableview uiview

如何从该表中的自定义单元格中访问我有UITableView的UIView。我找不到一种方法来做到这一点。 感谢

1 个答案:

答案 0 :(得分:5)

您可以添加一个指向UITableView的实例变量,并在创建/配置单元格时设置它(例如在tableView:cellForRowAtIndexPath :)中。确保您的单元格不保留tableView。 知道你的单元格的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。