我正在尝试使用ColllectionView和CardView制作日历,该日历会不断显示,但用户可以扩展以查看特定日期的约会。看起来像这样的collapsed和expanded。我无法解决的问题是,当我在CollectionView上按一个日期时,我希望CardView上的标签更新并显示所选的日期。问题是当我尝试通过从CollectionView上的didSelectItemAt调用CardView类的方法来设置新日期时 标签不变。我认为这与CardView加载一次但从未重新加载标签文本有关,因为在我的代码中,带有选定日期的实际字符串在传递给CardView上的方法时确实到达了其最终目的地。 / p>
CollectionView didSelectItemAt方法:
cardView = CardViewController()
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell=collectionView.cellForItem(at: indexPath)
cell?.backgroundColor=Colors.darkRed
let lbl = cell?.subviews[1] as! UILabel
lbl.textColor=UIColor.white
var month = String(currentMonthIndex)
let year = currentYear
let dateString = String(year) + "/" + month + "/" + lbl.text!
let date = dateString.date //.date is a String extension to turn it to type Date
cardView.updateCardData(SelecctionDate: date!)
}
CardView的updateCardData方法
func updateCardData(SelecctionDate: Date) {
self.dateLabel?.text = self.getDate(dateAsISO: SelecctionDate)
self.viewWillAppear(true)
}
如果你们需要更多信息或代码,我愿意与他人分享,如果我的英语不是最好,那不是我的母语:p
谢谢!