gpt4 book ai didi

ios - Objective C - UITableView 视觉变化出现在 false if 语句中

转载 作者:行者123 更新时间:2023-11-29 02:44:19 24 4
gpt4 key购买 nike

我在 UITableView 中有一个日历列表,我正在更改单元格的颜色以指示事件是否在今天。这是有效的,今天发生事件的所有单元格都在改变颜色,但是当我上下滚动时,其他单元格也在改变颜色(今天不适用的单元格。)每当 if 语句被触发时,我 NSLogged并且它只会在正确的单元格(今天事件的单元格)上被调用。

以下代码在我的 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 中:

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *event = [[NSDateComponents alloc] init];

[event setYear:year];
[event setMonth:month];
[event setDay:day];

CFGregorianDate currentDate = CFAbsoluteTimeGetGregorianDate(CFAbsoluteTimeGetCurrent(), CFTimeZoneCopySystem());

if ((currentDate.year == event.year) && (currentDate.month == event.month) && (currentDate.day == event.day))
{
cell.backgroundColor = [UIColor colorWithRed:(209/255.0) green:(247/255.0) blue:(255/255.0) alpha:1];
NSLog(@"Current Date : %d/%d/%d", currentDate.day, currentDate.month, currentDate.year);
NSLog(@"Item Date : %ld/%ld/%ld", (long)event.day, (long)event.month, (long)event.year);
NSLog(@"-");
}

如果有人能分享他们对为什么今天不适用的细胞会改变颜色的想法,我将不胜感激。这是 iOS 中的视觉错误,因为 if 语句内部的 NSLogging 仅记录正确的单元格吗?在 iOS 7 和 iOS 8 Beta 5 中测试。

预先感谢您的帮助。

最佳答案

我猜你是用 dequeueReusableCellWithIdentifier: 或相关的来创建你的单元格。

因为您正在重复使用单元格,所以您实际上得到了一个您之前已经显示过的单元格,也许是一个背景颜色已更改的单元格。

UITableView 配置单元格时的最佳做法是永远不要离开 if 语句而没有 else 语句处理其他情况。

根据您的情况,您应该添加:

else {
cell.backgroundColor = //whatver color is the non-selected
}

关于ios - Objective C - UITableView 视觉变化出现在 false if 语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25337016/

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