为什么tableview单元格背景视图在导航后运行良好?

时间:2012-01-26 09:34:52

标签: iphone ios uiview uitableview

此时我正在使用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控制器然后单元格背景不保持透明视图意味着单元格视图不能对那些代码工作。所以有人帮我。我遇到了严重的问题。

注意 * 我想给屏幕截图但是在模拟器中意外地我没有遇到这个问题。 *

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

这也可以解释为什么它不会发生在模拟器中,因为模拟器受到较少的记忆约束,因此可能不会卸载视图。尝试在第二页的模拟器中模拟内存警告,然后返回到第一个视图,看看您的单元格是否与设备上的单元格一样非高亮显示。

要在重新加载视图后保持效果,您需要记住在按下新视图之前突出显示的单元格索引,然后重新突出显示tableView中的正确单元格:cellForRowAtIndexPath:方法-created。

答案 1 :(得分:0)

你有吗

[self.tableView reloadData]

in会出现吗?

如果您已经有,请尝试在表格视图中放置一个标记,在显示的位置,从超级视图中删除标记并重新创建表格。

希望我理解这个问题。