0

我尝试将 UITableView 打包为我自己的。代码是:

@interface OPTableView : UIView<UITableViewDelegate,UITableViewDataSource>
{
    NSMutableArray *_dataSource;
    id<OPTableviewDelegate>_delegate;
}
@property(retain,nonatomic)id<OPTableviewDelegate>delegate;
@property(retain,nonatomic)NSMutableArray *dataSource;

米:

@implementation OPTableView

@synthesize delegate=_delegate;
@synthesize dataSource=_dataSource;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        tableView=[[UITableView alloc] initWithFrame:frame];
        tableView.delegate=self;
        tableView.dataSource=self;
        _dataSource=[NSMutableArray array];
        [self addSubview:tableView];
        [tableView release];
    }
    return self;
}

#pragma table delegate

- (void)tableView:(UITableView *)tab didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
}

当我创建 OPTableView 时,它可以显示在屏幕上。但问题是当我选择一个表时,它不会调用委托方法:didSelectRowAtIndexPath,但更糟糕的是,它崩溃了。

4

3 回答 3

0

什么是 OPTableViewDelegate?您的表的委托类型为 OPTableViewDelegate,而不是 UITableViewDelegate。

于 2012-09-08T06:27:51.067 回答
0

所有,我犯了一个非常愚蠢的错误。在'initWithFrame'方法中,代码:_dataSource=[NSMutableArray array]; 是绝对错误的。

我删除了这段代码“_dataSource=[NSMutableArray array];”,一切正常。

谢谢大家。

于 2012-09-09T05:57:13.683 回答
0

尝试将单元格的选择样式设置为某个非无值。另请注意,您应该实现表的所有必需的委托消息 - 您这样做了吗?

于 2012-09-08T04:29:00.330 回答