在 UICollectionView 中重新加载数据 - Swift
Reload data in a UICollectionView - Swift
我正在尝试使用 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 个额外的单元格以跳过星期日和星期一。这就是更新前后单元格数量冲突的原因。
还有什么方法可以解决这个问题?
我终于解决了这个问题。
对于遇到相同问题的任何人:
使用 reloadData()
,它会很好地工作。我的应用程序崩溃是因为 days
数组中的索引不足 运行。
希望对您有所帮助:)
我正在尝试使用 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 个额外的单元格以跳过星期日和星期一。这就是更新前后单元格数量冲突的原因。 还有什么方法可以解决这个问题?
我终于解决了这个问题。
对于遇到相同问题的任何人:
使用 reloadData()
,它会很好地工作。我的应用程序崩溃是因为 days
数组中的索引不足 运行。
希望对您有所帮助:)