我正在尝试使用 UICollectionView 创建一个简单的日历。一切似乎都运行良好。我需要根据月份交易日历,即当我单击按钮时,月份应更改为上个月,所有单元格中的文本应根据上个月更改。我尝试使用collectionview!.reloadData()
,但我的应用程序因此而崩溃。我什至尝试删除所有单元格然后重新加载,但它也可以工作。
这是我的代码:
@IBAction func prevMonth(){
day = -1
if(month == 1){month = 12
year = year-1}
else{
month = month-1}
let firstdate = "01-\(month)-\(year)"
let dcalender = NSCalendar.currentCalendar()
let formatter:NSDateFormatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
let dateComponents = dcalender.components([.Weekday],fromDate: formatter.dateFromString(firstdate)!)
weekday = dateComponents.weekday
self.collectionView?.reloadItemsAtIndexPaths((self.collectionView?.indexPathsForVisibleItems())!)
}
我的错误:
Invalid update: invalid number of items in section 1. The number of items contained in an existing section after the update (35) must be equal to the number of items contained in that section before the update (31), plus or minus the number of items inserted or deleted from that section (31 inserted, 31 deleted) and plus or minus the number of items moved into or out of that section (0 moved in, 0 moved out).
我是 swift 和 iOS 开发的新手,所以也许我错过了一个非常简单的点。请帮帮我。
更新
我终于明白了原因。发生这种情况是因为当我为特定月份添加单元格时,我会根据工作日添加它们。因此,如果该月的第一天是星期二,我会在开头添加 2 个额外的单元格以跳过星期日和星期一。这就是为什么更新前后的单元格数量有冲突的原因。解决这个问题的另一种方法是什么?