自定义 UITableViewCell 标签文本在取消选择时不会变回
Posted
技术标签:
【中文标题】自定义 UITableViewCell 标签文本在取消选择时不会变回【英文标题】:Custom UITableViewCell label text doesn't change back on deselect 【发布时间】:2013-10-25 20:41:37 【问题描述】:我有一个UITableViewCell
的自定义子类。我通过设置UILabel
的外观代理的一些属性来自定义单元格中包含的标签,如下:
[UILabel appearanceWhenContainedIn:[UITableViewCell class], nil].textColor = [UIColor blackColor];
[UILabel appearanceWhenContainedIn:[UITableViewCell class], nil].highlightedTextColor = [UIColor redColor];
当我在 UI 中选择单元格时,标签的颜色会按预期发生变化,并且代码会推送到下一个视图控制器。但是,当我弹出这个新的视图控制器并使用自定义 UITableViewCell
s 返回屏幕时,即使我在代码中取消选择单元格,突出显示的文本颜色仍然存在,如下所示:
- (void)viewDidAppear:(BOOL)animated
if ([self.tableView indexPathForSelectedRow])
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
[super viewDidAppear:animated];
这是 ios 7 中的错误还是我做错了什么?
【问题讨论】:
【参考方案1】:我不会称它为错误,但有一种方法可以修复它。
-(void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:YES];
if ([self.tableView indexPathForSelectedRow])
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
【讨论】:
【参考方案2】:杰米,我也遇到了同样的情况。我有一个UIView
作为contentView
的UITableViewCell
和UITableView
在UIPopoverController
中。如果我在关闭弹出框后重新打开它,选择突出显示将不会清除。
我确实尝试了这里提到的两种解决方案,但正如你所说的那样,两者都不起作用。在调试时,我意识到UITableView
不知何故丢失了选择,并且没有为indexPathForSelectedRow
返回任何内容。
很遗憾,我没有找到一个很好的解决方案。我将其称为 iOS 7 错误 UITableView 的行为不像以前和预期的那样。
我采用的解决方案是更改UIView
的背景颜色,而不是使用UITableView
的选择方法并将其更改回viewWillDisappear
中的默认颜色。
我全神贯注于阅读更好的解决方案。
【讨论】:
以上是关于自定义 UITableViewCell 标签文本在取消选择时不会变回的主要内容,如果未能解决你的问题,请参考以下文章
Swift中基于标签文本长度的动态自定义UITableViewCell的高度
根据标签文本长度动态自定义 UITableViewCell 的高度
自定义 uitableViewcell 内部:UILabel 背景超出文本长度(以编程方式)