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

use*_*375 2 iphone uitableview uiview

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

ker*_*ich 5

您可以添加指向UITableView的实例变量,并在创建/配置单元格时设置它(例如在tableView:cellForRowAtIndexPath :)中.确保您的单元格不保留tableView.知道你的单元格的tableView,调用[parentTableView superView]来访问UITableView的父视图:

@interface PropertyListingCell : UITableViewCell {
    __weak id    parentTableView;
}

- (void) setParentTableView:(UITableView*)tv; // parentTableView = tv;
Run Code Online (Sandbox Code Playgroud)

在UITableViewController实现中:

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

    //dequeue/create and configure your custom cell here

    [cell setParentTableView:tableView];
    return cell;
}  
Run Code Online (Sandbox Code Playgroud)

更新:

如果你使用的是最近的XCode(至少4.3),你可以简单地添加

@property (weak) UITableView *parentTableView; // use unsafe_unretained instead of weak if you're targeting iOS 4.x
Run Code Online (Sandbox Code Playgroud)

到@interfaceUITableViewCell子类的一部分.然后,当您创建一个单元格(in tableView:cellForRowAtIndexPath:)时,相应地设置此属性:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // ...
    //dequeue/create and configure your custom cell here
    // ...
    cell.parentTableView = tableView;
    return cell;
}
Run Code Online (Sandbox Code Playgroud)

并在您的单元类调用self.parentTableView中访问此单元所属的tableView.