带有自定义单元格的UITableView在iOS 6上绘制得很好,但在iOS 7中完全是白色的

时间:2013-11-21 21:16:23

标签: ios uitableview ios7

我正在Xcode 5上构建一个针对iOS 6 +的应用程序。

我在使用自定义单元格构建表格视图时遇到问题。有趣的是,它直到我今天更新到Xcode 5.0.2(我不知道改变了什么)之前一直很好用。我的表格视图之前确实绘制了纯白色(下面的屏幕截图),当我搞砸了iOS 7 SDK附带的白色导航栏样式(我也不知道它们如何也相互链接)。无论如何,当我从我的代码中删除了灯状态栏选项时,我的表视图用于正常绘制,尽管我有黑色状态栏。今天,在安装Xcode 5.0.2之后,我在没有更改任何代码的情况下构建了相同的项目,而我的表视图现在在iOS 7(设备和模拟器)上绘制了纯白色。当我切换到iOS 6时,它显示完美(设备和模拟器)。我已经尝试清理构建文件夹,清理派生数据文件夹,重新启动Xcode /模拟器/设备,但没有任何改变。此外,应用程序开始显示白色状态栏,在更新Xcode之前没有。我知道它们应该是无关紧要的,但我现在很难开发我的应用程序。单元格接收所有触摸事件,表格视图滚动,我在输出处获得所有NSLog s,当我向下滚动时我可以看到滚动条。它只是没有画。我的自定义单元格中有自定义drawRect:代码。在看到UITableViewCell custom CG drawing iOS 7subclassed UITableViewCell - backgroundView covers up anything I do in drawRect后,我注释掉了该代码,但它没有帮助。这是我在iOS 7上获得的(灰色选定的单元格):

enter image description here

这是iOS 6上的相同应用程序(隐私模糊文本/图像):

enter image description here

以下是-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath的代码:

MyFriendViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"friendTableCell"];
    if(!cell){
        cell = [[[NSBundle mainBundle] loadNibNamed:@"MyFriendViewCell" owner:self options:nil] lastObject];
    }
    /* some code that sets text fields/images */
    [...]
    return cell;

我有一个XIB文件(只有一个对象,我的自定义单元格类)和一个与单元格对应的类。我在开始时注册了我的手机:

[self.tableView registerNib:[UINib nibWithNibName:@"MyFriendViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"friendTableCell"];

我已经检查了方法中的cell,无论如何,dequeue永远不会返回nil

更新:我也意识到我的应用在iOS 6的这个屏幕上空闲时使用100%的CPU(即使它运行正常)和iOS 7上的。)

重要提示:问题已得到解答,但对于任何想知道drawRect:的人来说,问题与此无关,我仍在使用自定义{{ 1}}它完美无缺。

2 个答案:

答案 0 :(得分:2)

setcontentview backgroundColor 清除颜色

答案 1 :(得分:1)

@Kjuly

This answer对类似的问题就是我用来解决这个问题的方法。重要的是将此方法添加到表视图的委托:

- (void)tableView:(UITableView *)tableView
  willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
  [cell setBackgroundColor:[UIColor clearColor]];
}