customTableViewCell无法正常工作

时间:2014-08-05 13:32:44

标签: ios objective-c uitableview

我创建了一个名为TestTableViewCell的tableViewCell子类。我使用这个连接了数据源和委托。问题是它似乎没有做我在子类中所说的任何事情,甚至没有改变背景?

self.tableView.delegate = self;
self.tableView.datasource = self;

我已将单元类更改为TestTableViewCell并创建了一个名为Cell的标识符。

的cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"Cell";
    TestTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (!cell) {
        cell = [[TestTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }




    return cell;
}

子类

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        UIButton *btn1 = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.frame) - 60, 10, 50, 30)];
        [btn1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [btn1 setTitle:@"B1" forState:UIControlStateNormal];
        [self.contentView addSubview:btn1];

       UIButton *btn2 = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetMinX(btn1.frame), 70, 50, 30)];
        [btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [btn2 setTitle:@"B2" forState:UIControlStateNormal];
        [self.contentView addSubview:btn2];

        UIButton *btn3 = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetMinX(btn1.frame), 130, 50, 30)];
        [btn3 setTitle:@"B3" forState:UIControlStateNormal];
        [btn3 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [self.contentView addSubview:btn3];

        UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(moveCover:)];
        gesture.direction = UISwipeGestureRecognizerDirectionLeft;

        UISwipeGestureRecognizer *gesture2 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(moveCover:)];
        gesture2.direction = UISwipeGestureRecognizerDirectionRight;

        _coverView = [[UIView alloc] initWithFrame:CGRectMake(0, 5, CGRectGetWidth(self.frame), 195)];
        _coverView.backgroundColor = [UIColor grayColor];
        [self.contentView addSubview:_coverView];

        [self addGestureRecognizer:gesture];

        [self addGestureRecognizer:gesture2];

        self.selectionStyle = UITableViewCellSelectionStyleNone;
    }
   return self;
}

1 个答案:

答案 0 :(得分:1)

假设您正在使用Interface Builder并且具有带有“自定义”动态原型单元格的UITableView。您是否将TestTableViewCell子类分配给IB中的表格单元格行(就像您在创建自定义UITableViewController子类时为UITableViewController所做的那样?如果您不这样做,那么当您将单元格出列时,您将获得单元格(和默认类别) )如IB中所定义,而不是具有自定义类的自定义单元格。

另外,请注意,子类中的所有按钮创建逻辑等都可以直接进入IB中的自定义单元格(可视化),如果您愿意,可以避免使用所有代码。只需在IB中直观地设计行,然后使用Assistant Editor在自定义单元格(TestTableViewCell)标题和实现(.m)中创建出口和操作。

最后,您不需要在CellForRowAtIndexPath

中分配单元格