在 uiTableViewCell 中更改 UILabel 的属性

Posted

技术标签:

【中文标题】在 uiTableViewCell 中更改 UILabel 的属性【英文标题】:Change properties of UILabel in a TableViewCell 【发布时间】:2009-06-24 08:14:30 【问题描述】:

我有一个基于旧 SQLiteBooks 中的 DetailViewController 的 tableView。它是以编程方式创建的。每个单元格显示一个值,单击该值时会显示一个通用 editingController,允许用户编辑该值。相当标准的可可触感……

除了...我在所述 tableView 的标题中还有一个分段控件,根据它的设置需要更改表中 8± tableViewCells 之一中的 UILabel 上的属性 (textColor)。我没有这个 tableView 的 IBOutlets,因为我完全用代码创建了它。那么,我需要在我的 (void)segmentAction:(id)sender 方法(segmentedControl 更改状态时触发)中做什么,以允许我访问和更改此值并将其显示给用户?构建表时(cellForRowAtIndexPath),每个 UILabel 都被称为“值”,然后添加:[cell.contentView addSubview:value]

我尝试设置 viewController 本身的属性,然后在 cellForRowAtIndexPath 期间检查该属性并在那里进行 textColor 业务...然后将 [self.tableView setNeedsDisplay] 添加到我的 segmentAction: 方法,但它似乎不起作用?!?

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您知道要修改的单元格的索引路径,则可以调用 cellForRowAtIndexPath: 来检索 UITableViewCell。一旦你有了它,你就可以从中得到 UILabel 。如果在创建 UILabel 时将其标签设置为一些有用的值,则可以通过 viewWithTag: 从 UITableViewCell 中检索它。

【讨论】:

我遇到的问题,或者至少是我对这种方法的解释,是我的 cellForRowAtIndexPath 中有太多的事情需要首先绘制表格。虽然有条件参数我可能会得到这个工作......【参考方案2】:

在实现 cellForRowAtIndexPath 的类中,您还可以在构建相关单元格时存储对 UILabel 的引用。

这意味着您可以更改标签并将其标记为重新绘制。

或者,您可以持有一个本地 BOOL 来显示单元格应该以不同的方式绘制 - 然后在 cellForRowAtIndexPath: 中使用它来绘制背景。

使用 UITableViewCell 中的 3.0 textLabel 对象,您可能会发现这更容易

【讨论】:

噢!我的控制器中有一个简单的 ivar,它在创建时指向 UILabel!效果很好!谢谢。

以上是关于在 uiTableViewCell 中更改 UILabel 的属性的主要内容,如果未能解决你的问题,请参考以下文章

更改 UITableViewCell 中 imageView 的位置

在 iOS 14 中更改 UITableViewCell 背景颜色

在 iPhone 中动态更改 UITableviewCell 高度?

在 UITableViewCell 中更改大小类时的 UIStackView 布局问题

更改 UITableViewCell 中某些子视图的突出显示

在 uiTableViewCell 中更改 UILabel 的属性