如何在运行时将 UITableViewCell 从启用更改为禁用,使其文本从黑色变为灰色?
Posted
技术标签:
【中文标题】如何在运行时将 UITableViewCell 从启用更改为禁用,使其文本从黑色变为灰色?【英文标题】:how to change UITableViewCell from enabled to disabled at runtime so its text goes from black to grey? 【发布时间】:2011-12-27 20:38:30 【问题描述】:我想在运行时更改 UITableViewCell 的启用状态,使其外观与其状态匹配(启用时为黑色文本,禁用时为灰色文本)。
当我在第一次加载表格时将单元格的 userInteractionEnabled 属性设置为 YES/NO 时,我得到的正是我想要的:启用的单元格有黑色文本,禁用的单元格有灰色文本。
但是,当我离开此表然后返回时,更改属性会更改单元格的状态,但不会更改其黑色/灰色外观。
(我正在重新加载 'viewWillAppear:animated:' 中的表格,正在调用 'tableView:cellForRowAtIndexPath:',并且我正在适当地更改 userInteractionEnabled,事实证明我现在可以选择一个新启用的单元格,即使它文本仍然是灰色的。)
这是一个标准的 UITableViewCellStyleDefault 表格单元格。
欢迎在这里提出任何建议。
【问题讨论】:
在黑暗中拍摄,但尝试在tableView:willDisplayCell:forRowAtIndexPath:
委托方法中设置 userInteractionEnabled
...
值得一试,但没有这样的运气。单元格的文本颜色仍然没有变化。
【参考方案1】:
手动更改文本颜色?那不行吗?
cell.text.textColor = [UIColor somecolor];
【讨论】:
这是一个 hack,不应该是必要的。治本胜于治标。【参考方案2】:根据Weird ios bug with UITableViewCell and userInteractionEnabled,诀窍是先设置userInteractionEnabled
,然后设置文本。颠倒顺序不起作用。我能够使用 iOS 8.1.3 验证此行为。该帖子还有其他一些解决方法的想法。
【讨论】:
谢谢。下次我想在运行时启用/禁用表行时,我似乎偶然发现了相同的答案;现在,如果它再次开始对我失败,我会知道检查一下。以上是关于如何在运行时将 UITableViewCell 从启用更改为禁用,使其文本从黑色变为灰色?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 开发:如何在点击 UITableViewCell 时将其更改为可编辑的 UITextField?
动画时将 UITableViewCell 子 UIImageView 置于前面