gpt4 book ai didi

ios - 如何仅将 UITableView 的第一个单元格设置为不同的颜色?

转载 作者:行者123 更新时间:2023-12-01 17:58:28 27 4
gpt4 key购买 nike

我在这里使用 cellForRowAtIndexPath :

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if(cell == nil)
cell = [self getCellContentView:CellIdentifier];


UILabel *lbl = (UILabel*)[cell.contentView viewWithTag:1];

for (UITableViewCell *c in [tbl visibleCells])
{
// UITableViewCell *cell2 = [tbl cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
UILabel *lbl = (UILabel*)[c.contentView viewWithTag:1];
lbl.textColor = [UIColor redColor];
}

if([tbl indexPathForCell:cell].section==0)
lbl.textColor = [UIColor whiteColor];


UILabel *lblTemp1 = (UILabel *)[cell viewWithTag:1];
UILabel *lblTemp2 = (UILabel *)[cell viewWithTag:2];

//First get the dictionary object

lblTemp1.text = @"test!";
lblTemp2.text = @"testing more";

NSLog(@"%@",[tbl indexPathForCell:cell]);

return cell;


}

但是仍然使我的一些细胞变成白色而不是灰色。

如何仅将行中的第一项更改为白色?

最佳答案

第一:抛弃

for (UITableViewCell *c in [tbl visibleCells])
{
//UITableViewCell *cell2 = [tbl cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
UILabel *lbl = (UILabel*)[c.contentView viewWithTag:1];
lbl.textColor = [UIColor redColor];
}

并将其更改为
UILabel *lbl = (UILabel*)[c.contentView viewWithTag:1];
lbl.textColor = [UIColor redColor];

无需遍历此处所有可见的单元格。

然后改变
if([tbl indexPathForCell:cell].section==0)
lbl.textColor = [UIColor whiteColor];


if((indexPath.section==0)&&(indexPath.row==0))
lbl.textColor = [UIColor whiteColor];

如果这个类/对象是几个 tableViews 的委托(delegate),你应该
添加额外的检查
if ((tableView == correctTableView)&&...

值得注意的是
[tbl indexPathForCell:cell]

无关紧要。您的引用是参数 (NSIndexPath *)indexPath .

如果问题仍然存在,您应该发布您的 getCellContentView: 的代码方法。

编辑:根据 rmaddy 的建议,自从 cellForRowAtIndexPath:性能很重要,最好使用:
if((indexPath.section==0)&&(indexPath.row==0))
{
lbl.textColor = [UIColor whiteColor];
}
else
{
lbl.textColor = [UIColor redColor];
}

这样,您在处理第一个单元格时可以避免不必要的双重更改。

关于ios - 如何仅将 UITableView 的第一个单元格设置为不同的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517048/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com