【问题标题】:How to add/not add an event cell depending on the date of the event cell如何根据事件单元格的日期添加/不添加事件单元格
【发布时间】:2025-11-26 01:10:04
【问题描述】:

在我的应用程序中,我可以添加一个事件,它们的事件将在 tableView 中显示为包含事件信息的单元格。现在我希望能够设置事件的日期,然后如果该日期早于当前日期(事件发生在过去),则单元格只会添加到 tableView。代码如下:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let e = events[indexPath.row]
    let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CustomCell
    let Date1 = e.eventDate
    let Date2 = NSDate()

    if Date1!.earlierDate(Date2).isEqualToDate(Date1!) {

        // Sets labels in cell to whatever user typed in on the events page
        cell.titlePrototypeCell!.text = e.eventTitle!

    } else {

        //Code to not add a cell

    }

    return cell

}

这样做的问题是,如果事件日期在当前日期之后(将来),那么会将一个常规单元格添加到 tableView,而不是根本没有单元格。如果事件发生在未来,关于如何不添加单元格的任何想法?

【问题讨论】:

  • 与您在行数委托方法中使用的逻辑相同?。调试和检查。以毫秒为单位获取时间并比较值。然后检查。
  • 对于日期比较,请参阅此 SO Qn *.com/questions/26198526/…
  • 你必须先过滤你的数据
  • 我认为代码中的 if 语句可以正常工作,只是我不确定如果日期是将来如何不添加单元格,我编辑了代码,也许问题更有意义

标签: ios uitableview swift2 nsdate xcode7


【解决方案1】:

你必须做一件事。 1) 从 events 数组中删除不包含未来日期的对象。

2) 重新加载表格数据。

所以你可以得到一个只有未来日期的记录

此代码可能会对您有所帮助。在得到您的响应之前调用此方法。

func RemoveData(){
     for var i = events.count-1; i >= 0 ; i-- {
      let e = events[i]
      let Date1 = e.eventDate
      let Date2 = NSDate()
      if Date1!.earlierDate(Date2).isEqualToDate(Date1!) == false{
            events.removeObjectAtindex(i)
      }
    }
}

【讨论】:

    最近更新 更多