ios - 自定义 uitableviewcell 中看似随机的标签文本更改

标签 ios uitableview uilabel

我有一个 UITableView,它根据标签内的许多因素显示动态信息。这些标签又是用作可重用单元格的自定义 UITableViewCell 的属性。除了一个讨厌的标签 self.thisCustomCell.fromDateLabel 之外,一切似乎都运行良好。

此标签应反射(reflect)特定事件的时间间隔是否与选定搜索时间范围的开始时间重叠。如果是这样,标签应显示为“提前开始”。如果不是,则标签应读取相关事件的实际 startTime。实际上,在一般情况下,按时间顺序排列最旧(最底部)的标签应该总是说“STARTED EARLIER”。

但是,这个标签的行为是不稳定的,无论它是在最旧的单元格还是另一个单元格中。这意味着最旧的单元格(其持续时间应始终与时间范围的开始时间重叠)通常会给出 startTime,而其他单元格,它们应该从不显示“STARTED EARLIER” , 有时会。

这里有几个截图来说明这个问题:

顺序是按时间顺序降序排列的,并且第一个镜头中最底部的单元格跨越了时间范围的开始时间,因此右下角的标签应该显示为“较早开始”。

enter image description here

在这张照片中,您可以看到其他单元格中的标签确实显示为“提前开始”,尽管它不应该显示。

enter image description here

这是我认为相关的代码:

-(void) updateOtherLabels
{
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
    [dateFormat setDateFormat: @"MM/dd/yy hh:mm a"];

    if ((thisActivity.startTime < self.detailStartDate) && (thisActivity.stopTime > self.detailStartDate))
    {
        self.thisCustomCell.fromDateLabel.text = @"STARTED EARLIER";
        NSLog(@"FromDateLabel text is %@",self.thisCustomCell.fromDateLabel.text);
        NSLog(@"self.detailStartDate is %@",[dateFormat stringFromDate:thisActivity.startTime]);

    }

    else
    {
        self.thisCustomCell.fromDateLabel.text = [dateFormat stringFromDate:thisActivity.startTime];
    }

    if (thisActivity.stopTime == NULL)
    {
        self.thisCustomCell.toDateLabel.text = @"RUNNING";
    }

    else
    {
        self.thisCustomCell.toDateLabel.text = [dateFormat stringFromDate:thisActivity.stopTime];
    }

}

有人可以指出我做错了什么吗?对谷歌和 SO 的广泛搜索没有发现任何似乎适用的东西。我可以提供任何可能相关的附加代码。

感谢观看!非常感谢所有帮助!

已修复,感谢@rdelmar:

我将上面代码中的 if 语句替换为:

if (([thisActivity.startTime timeIntervalSinceDate:self.detailStartDate] < 0) && ([thisActivity.stopTime timeIntervalSinceDate:self.detailStartDate] > 0))

最佳答案

你不能用“<”来比较日期,那实际上是在比较指向这些日期的指针,而不是日期本身。您可以使用 NSDate 类引用中列出的日期比较方法之一,也可以使用 timeIntervalSince1970 (或其他 timeIntervalSince... 方法之一)将日期转换为基元,然后使用“<”。

if (([thisActivity.startTime timeIntervalSince1970]  < [self.detailStartDate timeIntervalSince1970] ) && ([thisActivity.stopTime timeIntervalSince1970] > [self.detailStartDate timeIntervalSince1970]))

关于ios - 自定义 uitableviewcell 中看似随机的标签文本更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24052086/

相关文章:

ios - FBLoginView委托(delegate)方法被调用两次甚至3次

ios - 用 Facebook 好友填充 UITableView

ios - 如何快速填充动态 UITableview 内部动态 UITableviewCell ?

ios - 垂直对齐两个不同字体大小的标签

ios - Xcode UIWebView 不会更改 URL 已更改的页面

iphone - iOS:从 UITableViewCell 中创建的按钮检索选择状态

ios - 在没有符号的设备上调试 iOS 应用程序

ios - 数据未从 JSON 加载到第二个 View Controller 上

objective-c - 使用多行标签时 systemLayoutSizeFittingSize 返回错误的大小

ios - UILabel numberOfLines 随动画变化