如何通过多个部分从NScollectionView中添加/删除项目



背景:
我是一个新开发人员,我不确定要去哪里获得帮助。过去一周,我一直在对此问题进行故障排除,但是我不知道是什么原因引起了问题。这是我的第一篇文章,我想成为一个好会员,所以请让我知道我是否犯了任何错误,我会很乐意纠正它们。

谢谢!

问题:
我正在设置一个有5个部分的NSCollectionView。有5个按钮将新项目添加到五个部分中,并且有一个按钮可以删除选定的项目。目前,设置了一个按钮。

但是,这些项目似乎在集合视图中没有正确添加或删除。

,如果在启动时没有添加项目,则应用程序会崩溃。

另外,在添加新项目时,它会在集合视图中添加额外的项目。

工作:
我已经通过了几个NSCollectionView教程,例如raywenderlich.com,ductran.com,youtube视频,中等文章,stackoverflow.com帖子和苹果文档。

以下是一些更有用的链接:
Raywenderlich-第1部分
Raywenderlich-第2部分
Ductran-照片应用
Ductran-新闻应用
苹果 - 文档

我从头到尾都按线进行了调试,从头开始启动了几次,构建了最简单的收集视图,并逐步添加到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 > 0if/then

使用5个部分和5个按钮工作NSCollectionView:链接

最新更新