我想启用一个"黑暗模式"功能到我的应用程序和我的tableview单元格中,我改变了这样的文本颜色
if ([FS isDarkModeEnabled]) {
cell.CATEGORY.textColor = [UIColor whiteColor];
cell.ORIGINUSER.textColor = [UIColor whiteColor];
cell.NUMFILES.textColor = [UIColor whiteColor];
cell.NUMTASKS.textColor = [UIColor whiteColor];
cell.SHARECOUNT.textColor = [UIColor whiteColor];
}
我想我用for循环替换上面的代码但是
for (id obj in [cell.contentView subviews]) {
if ([obj isKindOfClass:[UILabel class]]) {
NSLog(@"%@", ((UILabel *)obj).text);//<-- this spits out my storyboard placeholder text and not the acutal text for some reason.
[((UILabel *)obj) setTextColor:[UIColor greenColor]];
}
}
和
FSCategoriesTVCCell *cell2 = [self.tableView cellForRowAtIndexPath:indexPath];
for (UILabel *lbl in [cell2.contentView subviews]) {
[lbl setTextColor:[UIColor greenColor]];
}
但我无法让它发挥作用。
以上所有代码均在- tableView:cellForRowAtIndexPath:
我知道如何手动更改文本颜色,我想要做的是循环遍历单元格的内容并通过for循环更改颜色,而不是通过声明每个标签并单独更改每个标签。
或者,简而言之,我想要一个for
循环,而不是cell.Label1.textColor = blah
答案 0 :(得分:3)
当用户启用黑暗模式时,您必须通知tableview它应该更新单元格。要执行此操作,只需调用tableView的[tableView reloadData]
方法。
答案 1 :(得分:0)
选项1:查看加载时
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.textColor = [UIColor blueColor];
cell.textLabel.text = @"highboi";
return cell;
}
选项2:单击或选择tableView
时- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView cellForRowAtIndexPath:indexPath].textLabel.textColor = [UIColor redColor];
}