我创建了一个名为TestTableViewCell的tableViewCell子类。我使用这个连接了数据源和委托。问题是它似乎没有做我在子类中所说的任何事情,甚至没有改变背景?
self.tableView.delegate = self;
self.tableView.datasource = self;
我已将单元类更改为TestTableViewCell并创建了一个名为Cell的标识符。
- (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;
}
答案 0 :(得分:1)
假设您正在使用Interface Builder并且具有带有“自定义”动态原型单元格的UITableView。您是否将TestTableViewCell子类分配给IB中的表格单元格行(就像您在创建自定义UITableViewController子类时为UITableViewController所做的那样?如果您不这样做,那么当您将单元格出列时,您将获得单元格(和默认类别) )如IB中所定义,而不是具有自定义类的自定义单元格。
另外,请注意,子类中的所有按钮创建逻辑等都可以直接进入IB中的自定义单元格(可视化),如果您愿意,可以避免使用所有代码。只需在IB中直观地设计行,然后使用Assistant Editor在自定义单元格(TestTableViewCell)标题和实现(.m)中创建出口和操作。
最后,您不需要在CellForRowAtIndexPath
中分配单元格