我有5个静态单元格的tableview。它们是静态的,因为在tableview中总是只有5个。
我想要他们自定义单元格,因为我需要在每个单元格中居中UIImageViews,因为它们将具有按钮图像而没有其他内容。我创建了一个带有UIImageView插座的MyCustomCell类,并将其连接到插座。
然后在tableview控制器类中我做了这个:
#pragma mark - TableView Cell Methods
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyCustomCell *cell = [[MyCustomCell alloc] init];
switch (indexPath.row) {
case 0:
// Use Custom Cell
cell.thumbnailImageView.image = [UIImage imageNamed:@"button.png"];
break;
case 1:
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
// USE IMAGE INSTEAD
cell.thumbnailImageView.image = [UIImage imageNamed:@"button1.png"];
break;
case 2:
cell.thumbnailImageView.image = [UIImage imageNamed:@"button2.png"];
break;
case 3:
cell.thumbnailImageView.image = [UIImage imageNamed:@"button3.png"];
break;
case 4:
cell.thumbnailImageView.image = [UIImage imageNamed:@"Search.png"];
break;
default:
break;
}
return cell;
}
MyCustomCell.m:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
细胞显示空白。当我使用UITableViewCell代替MyCustomCell时,它工作正常。所以我不确定为什么它现在失败了。
答案 0 :(得分:2)
我没有看到您在MyCustomCell.m
中引用自定义单元格的.xib文件的任何位置。你必须告诉该类要加载哪个.xib文件。
查看以下教程,该教程演示了一种从.xib文件加载单元格的方法(在自定义单元格类中):Creating custom UITableViewCell from XIBs – step by step tutorial
此问题显示了另一种方法(cellForRowAtIndexPath
内):
how to create custom tableViewCell from xib
此外,如果您在cellForRowAtIndexPath
中重新创建静态单元格,则不会使用静态单元格。您将丢失在Interface Builder中设置的任何内容。考虑放弃静态单元格。您可以在设置图像的同一位置设置所有单元格属性。
最后,如果您放弃静态单元格方法,请考虑在与表视图相同的视图控制器中创建自定义单元格(标准UITableView
具有用于此目的的占位符单元格)并将自定义单元格出列标准办法。然后,没有额外的.xib加载,因此它将自动处理。有关creating a custom table view cell的详细信息,请参阅我之前的回答。
答案 1 :(得分:0)
如果您使用静态单元格,只需为每个单元格创建IBOutlets,然后执行以下操作:
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyCustomCell *cell = nil;
switch (indexPath.row) {
case 0:
cell0.thumbnailImageView.image = [UIImage imageNamed:@"button.png"];
cell = cell0;
break;
case 1:
//you can set the accessory type in the storyboard
[cell1 setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
cell1.thumbnailImageView.image = [UIImage imageNamed:@"button1.png"];
cell = cell1;
break;
//etc
}
return cell;
}