如何在各种UITableView中重用我的自定义UITableViewCell?

时间:2013-02-09 05:26:32

标签: objective-c uitableview

我的应用中有三个独立的“UIViewControllers”。每个都附有UITableView。

  • 第一个UITableView只显示一行数据行(新闻项目)。
  • 第二个UITableView显示一个搜索视图,其中有几个部分,用户键入不同的搜索条件。
  • 第三个UITableView显示文章详细信息。

在每个UITableView中,都有一个按钮。

  • 首先,UITableView有“加载更多文章”按钮。
  • 第二个UITableView有“搜索”按钮
  • 第三个UITableView有“访问文章页面”按钮。

由于所有三个视图都是UITables,我创建了一个自定义的UITableCellView并添加到每个UITableViews。这是第二个UITableView

中我的“ButtonCell”的一个例子
ButtonCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ButtonCell"];
NSString *cellText = @"Search";
[[cell buttonLabel] setText:cellText];
return cell;

这很有效 - 正是我想要的。

现在我在第一个和第三个UITableView中添加了相同的“ButtonCell”,但发生了一些奇怪的事情。

  1. ButtonCell的背景颜色不正确 - 在ButtonCell“.xib”文件中,我将其设置为蓝色。这适用于第二个UITableView,但对于其他人来说,它只是“白色”。

  2. ButtonCell不再有“圆角”。

  3. 有关如何在任何UITableViews中正确“重复使用”自定义按钮单元的任何想法吗?

1 个答案:

答案 0 :(得分:1)

听起来你的第二个表是分组的,另外两个是普通的(你得到了带有分组表视图样式的圆角)。在IB中为普通表设置自定义单元格的颜色不起作用。您应该在tableView中设置单元格的颜色:willDisplayCell:forRowAtIndexPath:委托方法:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = [UIColor colorWithRed:.67 green:.93 blue:1 alpha:1];
}