0

我正在尝试实现一个自定义UITableViewCell,我希望从单元子类访问父 tableView。我正在创建一个允许我指定 tableview 的自定义 init 方法,但遇到了一个错误。

我尝试声明一个 iVar,__weak UITableView *_tableView;但是,我收到一个错误,指出它是重复声明。我查看了UITableViewCell头文件,果然,有一个声明

@private
    UITableView *_tableView;

这很棒,因为我假设 iOS 会为我设置这个,但是我想知道我是否被允许使用它,或者这是否是让我的应用程序被拒绝的那些事情之一。没有这方面的文档,我也没有在网上找到任何提及。

有任何想法吗?

4

2 回答 2

0

您不尝试访问私有 ivar 是对的。我建议也不要费心传递超级视图,而只需使用表格单元格可用的内容来找到它的封闭tableView

UIView+mytable.h:

#import <UIKit/UIKit.h>

@interface UIView (mytable)

- (UITableView *)mySuperTableView;

@end

UIView+mytable.m:

#import "UIView+dsltable.h"

@implementation UIView (dsltable)

- (UITableView *)mySuperTableView
{
    if ( [self isKindOfClass: [UITableView class]] )
        return (UITableView *)self;
    return [self.superview mySuperTableView];
}

@end
于 2013-02-28T03:48:35.880 回答
0

不,您无法访问未记录的私有 ivar。您要么需要使用不同的名称添加您的 ivar,要么通过获取单元格的超级视图来获取表格视图。

于 2013-02-28T03:50:34.093 回答