如何 Add/Remove 来自 NSCollectionView 的多个部分的项目
How to Add/Remove Items from NSCollectionView with Multiple Sections
背景:
我是一名新开发人员,我不确定去哪里寻求帮助。过去一周我一直在解决这个问题,但我不知道是什么导致了这个问题。这是我的第一个post,我想成为一个好的会员,所以如果我有任何错误,请告诉我,我很乐意改正。
谢谢!
问题:
我正在设置一个包含 5 个部分的 NSCollectionView
。有 5 个按钮可以将新项目添加到五个部分,还有一个按钮可以删除所选项目。目前设置了一个按钮。
但是,这些项目似乎没有在集合视图中正确添加或删除。
而且,如果在启动时没有项目添加到集合视图,应用程序会崩溃。
此外,在添加新项目时,它会向集合视图添加一个额外的项目。
工作:
我学习了几个 NSCollectionView
教程,例如 raywenderlich.com、ductran.com、youtube 视频、媒体文章、whosebug.com posts 和 apple 文档。
以下是一些更有帮助的链接:
raywenderlich - part 1
raywenderlich - part 2
ductran - photo app
ductran - news app
apple - documentation
我从头到尾逐行调试,从头开始几次,构建最简单的集合视图并逐步添加到其中,引用自 UICollectionView。
我很想学习,但是 NSCollectionView
上可用的资源似乎很少。
代码:
我不确定问题出在哪里,所以我不知道要post.
哪个代码
我已将应用上传到 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
}
Adding/Deleting:
extra/wrong 项与 absoluteIndexForIndexPath
相关。它被设置为 ... 而不是 ..<
崩溃:
崩溃与 viewForSupplementaryElementOfKind
有关。 NSCollectionView
函数需要为 websitesInSection > 0
设置 if/then
使用 5 个部分和 5 个按钮工作 NSCollectionView
:Link
背景:
我是一名新开发人员,我不确定去哪里寻求帮助。过去一周我一直在解决这个问题,但我不知道是什么导致了这个问题。这是我的第一个post,我想成为一个好的会员,所以如果我有任何错误,请告诉我,我很乐意改正。
谢谢!
问题:
我正在设置一个包含 5 个部分的 NSCollectionView
。有 5 个按钮可以将新项目添加到五个部分,还有一个按钮可以删除所选项目。目前设置了一个按钮。
但是,这些项目似乎没有在集合视图中正确添加或删除。
而且,如果在启动时没有项目添加到集合视图,应用程序会崩溃。
此外,在添加新项目时,它会向集合视图添加一个额外的项目。
工作:
我学习了几个 NSCollectionView
教程,例如 raywenderlich.com、ductran.com、youtube 视频、媒体文章、whosebug.com posts 和 apple 文档。
以下是一些更有帮助的链接:
raywenderlich - part 1
raywenderlich - part 2
ductran - photo app
ductran - news app
apple - documentation
我从头到尾逐行调试,从头开始几次,构建最简单的集合视图并逐步添加到其中,引用自 UICollectionView。
我很想学习,但是 NSCollectionView
上可用的资源似乎很少。
代码:
我不确定问题出在哪里,所以我不知道要post.
我已将应用上传到 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
}
Adding/Deleting:
extra/wrong 项与 absoluteIndexForIndexPath
相关。它被设置为 ... 而不是 ..<
崩溃:
崩溃与 viewForSupplementaryElementOfKind
有关。 NSCollectionView
函数需要为 websitesInSection > 0
设置 if/then
使用 5 个部分和 5 个按钮工作 NSCollectionView
:Link