为什么我的自定义UITableViewCell没有显示?

时间:2012-03-29 13:46:42

标签: ios uitableview

我之前没有问题就完成了自定义UITableViewCells ..但我无法弄清楚当前项目发生了什么。

这就是我所做的......

  1. 创建CustomCell.h(子类化UITableViewCell)
  2. 创建一个空的XIB并在UITableViewCell中拖动。将背景设置为黑色。
  3. 将Interface Builder中的UITableViewCell类更改为“CustomCell”
  4. 在DetailViewController中导入CustomCell.h
  5. 修改tableView:cellForRowAtIndexPath:
  6. static NSString *CellIdentifier = @"Cell";
    
    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (cell == nil) {
        NSLog(@"DO I GET HERE?");
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
        cell = [topLevelObjects objectAtIndex:0];
    }
    

    我希望我的tableview单元显示为黑色?但他们仍然表现出白色......任何想法?谢谢!

    更新:好的,结果是,它正在加载自定义单元格...我添加了一个带有一些白色文本的UILabel。我看不到它,但当我突出显示单元格时,我可以看到文本在那里。所以现在问题变成了,为什么细胞忽略了我为细胞设定的黑色背景?

3 个答案:

答案 0 :(得分:1)

编辑:至于为什么它不是黑色 - 我希望有一些东西遮住你的黑色 - 最有可能的候选者是标签背景是白色而且不清晰。

以及第3点。

属性检查器(第4个选项卡)需要将重用标识符设置为您要重用的标识符(在问题中使用@“cell”)。我会尝试使用更具体的东西 - 毕竟在某些应用程序中,您可能有许多类型的自定义单元格。

我认为您还需要将topLevelObjects转换为(CustomCell *)

if (cell == nil) {
    NSLog(@"DO I GET HERE?");
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
    cell = (CustomCell*)[topLevelObjects objectAtIndex:0];
}

答案 1 :(得分:1)

似乎忽略了我设置的背景颜色,所以我只是用背景颜色添加一个UIView,这似乎有用..

答案 2 :(得分:0)

您必须使用tableview注册自定义单元格

这需要在调用该委托之前发生:

[self.tableView registerClass: [CustomCell class] forCellReuseIdentifier:@"CellIdentifier"];