我有两个领域,它们是生日和周年纪念日。现在,如果生日或周年日期在接下来的30天内出现,我必须在桌面视图中显示它们。我正试图这样实现..
let cell2: BestWishesTableViewCell = tableView.dequeueReusableCell(withIdentifier: "bdayWishesCellIdentifier") as! BestWishesTableViewCell
if indexPath.row < customerDetails.count {
let bdayObj = customerDetails[indexPath.row]
if Calendar.current.isDateInNextThirtyDays(bdayObj.birthday!) {
cell2.nameLabel.text = bdayObj.fname
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
cell2.dateLabel.text = formatter.string(from: bdayObj.birthday!)
} else if Calendar.current.isDateInNextThirtyDays(bdayObj.anniversary!) {
cell2.nameLabel.text = bdayObj.fname
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
cell2.dateLabel.text = formatter.string(from: bdayObj.anniversary!)
}
}
else {
let bdayObj = customerDetails2ArrTwo[indexPath.row - customerDetailsArrTwo.count]
if Calendar.current.isDateInNextThirtyDays(bdayObj.birthday!) {
cell2.nameLabel.text = bdayObj.fname
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
cell2.dateLabel.text = formatter.string(from: bdayObj.birthday!)
} else if Calendar.current.isDateInNextThirtyDays(bdayObj.anniversary!) {
cell2.nameLabel.text = bdayObj.fname
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
cell2.dateLabel.text = formatter.string(from: bdayObj.anniversary!)
}
return cell2
}
这里,在第一部分中,从if indexPath.row < customerDetails.count
到else
部分之前,我从一个表中获取数据,而在else部分中我从另一个表中获取数据。在我刚刚提到的第一部分中,我正在检查生日和周年纪念日是否在接下来的30天内(现在事实上,bday和周年纪念日都在接下来的30天内,因为这就是我所提供的)。但它只是在tableview中显示生日而不是周年纪念日,而两个日期应该已经显示在tableview中。
既然我已经给了else if
,我知道它只执行第一个if
条件。但即使我没有使用else if
并使用另一个if
代替,那么所发生的事情再次只显示了一个单元格(即一个日期)(这次显示了周年日期)生日被周年纪念日改写。
如何让生日和周年纪念日一起出现(即2个单元格)......?
答案 0 :(得分:0)
您可以执行以下操作。基本上,您希望customerDetails数组中的每个对象都有两行。然后,使用行%2检查来确定它是偶数还是奇数
if indexPath.row < customerDetails.count * 2 {
let bdayObj = customerDetails[indexPath.row]
if indexPath.row % 2 == 0 {
if Calendar.current.isDateInNextThirtyDays(bdayObj.birthday!) {
cell2.nameLabel.text = bdayObj.fname
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
cell2.dateLabel.text = formatter.string(from: bdayObj.birthday!)
}
} else {
if Calendar.current.isDateInNextThirtyDays(bdayObj.anniversary!) {
cell2.nameLabel.text = bdayObj.fname
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
cell2.dateLabel.text = formatter.string(from: bdayObj.anniversary!)
}
}
}
但是,如果您在接下来的30天内(或不是两者)都有生日或周年纪念日,那就不会有效。
老实说,我认为你需要修改你是如何做到这一点的。您应该构建一个干净的数组,其中包含生日或周年纪念日的一个项目(如果需要,还有2个项目),如果在接下来的30天内已经检查过它。这样,您可以在您的cellforItemAt中根据indexPath.row进行干净查找。