背景:
我是一名新开发人员,我不确定该去哪里寻求帮助。在过去的一周中,我一直在对这个问题进行故障排除,但是我不知道是什么导致了这个问题。这是我的第一篇文章,我想成为一个好会员,所以如果我有任何错误,请告诉我,我们将很乐意纠正。
谢谢!
问题:
我正在设置一个包含5个部分的NSCollectionView
。有5个按钮可将新项目添加到五个部分中,还有一个按钮可删除所选项目。当前,仅设置了一个按钮。
但是,在收藏夹视图中似乎无法正确添加或删除项目。
而且,如果启动时没有将任何项目添加到收藏夹视图,则该应用程序将崩溃。
此外,在添加新项目时,它还会向收藏夹视图中添加一个额外的项目。
工作:
我已经完成了多个NSCollectionView
教程,例如raywenderlich.com,piperan.com,youtube视频,中型文章,stackoverflow.com帖子和Apple文档。
以下是一些更有用的链接:
raywenderlich - part 1
raywenderlich - part 2
ductran - photo app
ductran - news app
apple - documentation
我已经从头到尾逐行调试,从头开始调试了几次,构建了最简单的集合视图并逐步添加到该视图(从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
}
答案 0 :(得分:1)
添加/删除:
多余/错误的项目与absoluteIndexForIndexPath
有关。它设置为...而不是.. <
崩溃:
崩溃与viewForSupplementaryElementOfKind
有关。 NSCollectionView
函数需要为if/then
设置websitesInSection > 0
,
将NSCollectionView
与5个部分和5个按钮配合使用:Link