背景:
我是一名新开发人员,我不确定去哪里寻求帮助。过去一周我一直在解决这个问题,但我不知道是什么导致了这个问题。这是我的第一篇文章,我想成为一名优秀的成员(member),所以如果我犯了任何错误,请告诉我,我很乐意改正。
谢谢!
问题:
我正在设置一个包含 5 个部分的 NSCollectionView
。有 5 个按钮可以将新项目添加到五个部分,还有一个按钮可以删除所选项目。目前,设置了一个按钮。
但是,这些项目似乎没有在 Collection View 中正确添加或删除。
而且,如果在启动时没有项目添加到 Collection View ,应用程序会崩溃。
此外,在添加新项目时,它会向 Collection View 添加一个额外的项目。
工作:
我学习了多个 NSCollectionView
教程,例如 raywenderlich.com、ductran.com、youtube 视频、medium 文章、stackoverflow.com 帖子和 apple 文档。
以下是一些更有帮助的链接:
raywenderlich - part 1
raywenderlich - part 2
ductran - photo app
ductran - news app
apple - documentation
我从头到尾逐行调试,从头开始几次,构建最简单的 Collection View 并逐步添加到其中,引用自 UICollectionView。
我很想学习,但是 NSCollectionView
上可用的资源似乎很少。
代码:
我不确定问题出在哪里,所以我不知道该发布哪个代码。
我已将应用程序上传到 github:Link
我认为问题可能发生在 deleteItemsAtIndexPaths
处。错误的项目被删除,如果所有项目都被删除,应用程序会崩溃:
func deleteItemsAtIndexPaths(_ indexPaths: [IndexPath]) {
var indexes = [Int]()
for indexPath in indexPaths {
indexes.append(absoluteIndexForIndexPath(indexPath))
}
var newWebsites = [Website]()
for (index, website) in websites.enumerated() {
if !indexes.contains(index) {
newWebsites.append(website)
}
}
websites = newWebsites
}
fileprivate func absoluteIndexForIndexPath(_ indexPath: IndexPath) -> Int {
var index = 0
for i in 0 ... (indexPath as NSIndexPath).section {
index += numberOfWebsitesInSection(i)
}
index += (indexPath as NSIndexPath).item
return index
}
最佳答案
添加/删除:
额外/错误的项目与 absoluteIndexForIndexPath
相关。它被设置为 ... 而不是 ..<
崩溃:
崩溃与 viewForSupplementaryElementOfKind
有关。 NSCollectionView
函数需要为 websitesInSection > 0
设置一个 if/then
使用 5 个部分和 5 个按钮的 NSCollectionView
:Link
关于swift - 如何从具有多个部分的 NSCollectionView 添加/删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56080442/