取消选择后UITableViewCell丢失属性

时间:2011-01-27 00:23:39

标签: iphone objective-c cocoa-touch uitableview

我有一个UITableViewController的自定义子类,它使用一组UITableViewCells的自定义子类。

没有什么太花哨的。表格单元格在其内容视图中有两个子视图。

现在我让用户选择一个单元格,导航控制器会推送到颜色选择屏幕。用户选择颜色。大。表视图是此视图的委托。它接收颜色,更新选定的单元格,以便子视图现在使用此背景颜色,然后从导航控制器弹出当前视图。

一切正常! tableViewController将滑回视图,单元格中的指示器现在显示用户选择的背景颜色。但是在显示表格视图后,单元格选定的单元格将自动应用蓝色突出显示。这是TableViewController中的一些内置魔法。这很好,但它正在重置我的手机指示器状态。

问题是,我无法找到将细胞正确更新到这种新颜色的位置。颜色在tableViewController中存储为ivar。所以我想在尝试这个:

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

但是唉,这种方法并没有因为魔术UIKit正在做的事情来短暂地突出细胞。我需要正确更新我的细胞的任何想法吗?

1 个答案:

答案 0 :(得分:0)

我不确定你是如何设置背景颜色的,但你应该使用backgroundView子类的UITableViewCell属性。

someCell.backgroundView.backgroundColor = someColor;

(来自UITableViewController内部,或者从您的选择器中获取颜色信息的任何地方)。

当单元格从选定位置变为取消选择时,执行此操作不应重置背景颜色。