UITableView不会调用委托

时间:2012-09-08 04:09:41

标签: ios uitableview

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

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

的.m:

@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,但更糟糕的是,它会崩溃。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

谢谢大家。