如何在运行时将 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 置于前面

在运行时将对象转换为动态类型

选择时将子视图添加到 UITableViewCell

从 uicollectionView 选择创建 UITableViewCell

如何在 OBJECTIVE C 的 UITableViewCell 中更改先前按下的 UIButton 标签?