为啥导航返回后表格视图单元格背景视图工作良好?

Posted

技术标签:

【中文标题】为啥导航返回后表格视图单元格背景视图工作良好?【英文标题】:Why tableview cell background view working well after navigation back?为什么导航返回后表格视图单元格背景视图工作良好? 【发布时间】:2012-01-26 09:34:51 【问题描述】:

此时我正在使用 iPhone 5.0 模拟器。在我的 tableview 中,我为每个单元格背景颜色拍摄了一个 uiview,这个视图有一个背景图像。

现在,我的问题是当我的表包含控制器加载然后在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

我为表格单元格背景写了这个。

cellView = [[[UIView alloc] initWithFrame:CGRectMake(0,8,250, 51)] autorelease];
cellView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"order_text_area.png"]];
cellView.tag =10;
[cellView.layer setOpaque:NO];
cellView.opaque = NO;
[cell.contentView addSubview:cellView];

为了保持单元格背景透明,我使用了这段代码,它可以工作,但是

[cellView.layer setOpaque:NO];
cellView.opaque = NO;

当我选择一个单元格然后它是相应的控制器。现在我的问题是当我返回我的 tableview 控制器然后单元格背景不保持透明视图意味着单元格视图不适用于这些代码。所以任何人都可以帮助我.我遇到了严重的问题。

注意 *我想截屏,但没想到在模拟器中我没有遇到这个问题。*

提前致谢。

【问题讨论】:

你解决了这个问题吗?我有像你所说的那样,我不知道如何解决这个问题:/我现在挣扎了好几天...... 【参考方案1】:

如果您在代码中直接更改单元格背景,则设备上可能发生的情况是,当您移动到下一个屏幕时,前一个屏幕上的 tableView 正在被卸载以节省内存,以及何时你回到它,它被重新加载,并且通过为每个单元格调用 tableView:cellForRowAtIndexPath: 再次创建单元格。

这也可以解释为什么它不会在模拟器中发生,因为它的内存限制较少,因此可能不会卸载视图。尝试在第二页的模拟器中模拟内存警告,然后返回第一个视图,看看您的单元格是否像在设备上一样被取消突出显示。

为了使视图重新加载后效果持续存在,您需要记住在推送新视图之前突出显示的单元格索引,然后在重新突出显示 tableView:cellForRowAtIndexPath: 方法中的正确单元格时重新-创建。

【讨论】:

实际上我已经无法解释这个问题......我的问题是表格单元格包含图像作为背景颜色然后没有问题因为使用opaque: NO 但是当我在完成后选择该单元格时didselected 方法,当我返回控制器时,我可以看到表格单元格图像,但单元格上方有一个暗阴影,单元格图像周围有黑线,如边框。【参考方案2】:

你有吗

[self.tableView reloadData]

会出现吗?

如果已经有,请尝试在表格视图中放置一个标签,在将出现的情况下,从超级视图中删除该标签并重新创建表格。

希望我能理解这个问题。

【讨论】:

以上是关于为啥导航返回后表格视图单元格背景视图工作良好?的主要内容,如果未能解决你的问题,请参考以下文章

在表格视图中更改单元格的背景行为不符合预期[关闭]

直接在导航栏下方滚动表格视图单元格?

在 iOS 8 上选中时,表格视图单元格会跳转

向后滑动时嵌套推送动画可能导致导航栏损坏

第二个视图上的表格视图单元格

为啥在制作自定义表格视图单元格时将可重用单元格出列两次