UITableViewCell 外观只改变当前视图中的单元格

Posted

技术标签:

【中文标题】UITableViewCell 外观只改变当前视图中的单元格【英文标题】:TableViewCell Appearance only changes the cell's currently in the view 【发布时间】:2014-03-18 03:55:46 【问题描述】:

使用 UIAppearance,我正在更改表格视图单元格的标签颜色。这工作正常,但它只为当前看到的单元格着色。所有单元格的视图(不可见)仍然是默认颜色(黑色)。

总而言之,该方法仅更改当前可见的单元格,而不是超出视图(滚动视图)的单元格。

这是我的 UIAppearance 代码:

[[UILabel appearanceWhenContainedIn:[_textLabel class], nil]
 setTextColor:[UIColor colorWithRed:(204.0f/255.0f) green:(204.0f/255.0f) blue:(204.0f/255.0f) alpha:1.0f]];

【问题讨论】:

你能发布更多代码吗?比如你调用这些方法的部分。 【参考方案1】:

我猜你这里有一个错字,_textLabel 必须是 UITableViewCell 而不是 UILabel

[[UILabel appearanceWhenContainedIn:[YourTableViewCell class], nil]
 setTextColor:[UIColor colorWithRed:(204.0f/255.0f) green:(204.0f/255.0f) blue:(204.0f/255.0f) alpha:1.0f]];

您可以在cellForRowAtIndexPath 中检查重用单元格:

static NSString *CellIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell==nil)
   cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

【讨论】:

不,这是一个 UILabel,因为问题在于单元格的标题,而不是单元格的背景颜色。 不管怎样,_textLabel 是 UITableViewCell 的一部分 这和我做的一样,只是直接调用 UITableViewCell 这不是问题。问题是我调用的代码只会改变当前可视区域中单元格的文本颜色。 嗯,你能把你的cellForRowAtIndexPath发一下吗。

以上是关于UITableViewCell 外观只改变当前视图中的单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何复制这个 UIPageControl 外观?

UITableViewCell的accessoryView在可见视图改变后消失

在普通样式表视图上设置 UITableViewCell 背景颜色?

动态改变 UITableViewCell 高度 - Swift 4

UITableViewCell 子视图在 iOS7 中只返回 UITableViewCellScrollView

UITableViewCell 中的 UICollectionView 如何设置选择以将数据从当前视图传递到另一个视图