从集合视图Xcode中删除集合视图单元格

时间:2013-04-04 16:04:16

标签: ios objective-c xcode uicollectionview

我在Xcode 4.6中有一个带有集合视图的应用程序。我在每个集合视图单元格中添加了一个删除按钮,为用户提供删除单元格的选项。

虽然我意识到集合视图类似于表视图(我知道如何从表视图中删除单元格),但删除对象似乎在集合视图中的工作方式不同。我查看了集合视图的类参考,但是对iOS很新,我无法将他们建议的代码应用到我的项目中。该文档显示了以下建议的删除单元格的代码:

[self.collectionView performBatchUpdates:^{
NSArray* itemPaths = [self.collectionView indexPathsForSelectedItems];

// Delete the items from the data source.
[self deleteItemsFromDataSourceAtIndexPaths:itemPaths];

// Now delete the items from the collection view.
[self.collectionView deleteItemsAtIndexPaths:tempArray];
}   completion:nil];  

所以我在我的按钮动作方法中添加了这段代码。在它说“临时数组”的地方,我将集合视图使用的数组替换为数据源,以确定要显示的单元格数。但我对“deleteItemsFromDataSourceAtIndexPaths:”是什么感到困惑。这是委托方法吗?编译器警告它没有声明。我不知道从哪里开始。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

  

在“temp array”中,我将集合视图用作数据源的数组替换为确定要显示的单元格数。

这是你的第一个问题:数组很可能不包含NSIndexPath的实例,这是该方法所期望的。你可能想要的是传递itemPaths数组,这将使集合视图逐字地删除“所有选定行的索引路径。”

  

“deleteItemsFromDataSourceAtIndexPaths:”是。这是委托方法吗?

不,那是伪代码。 Apple认为没有必要深入讨论如何在循环中从数组中删除对象,我也不会这样做。你必须自己实现该方法,或者希望NSIndexPath不起作用,并使用{ {1}}正确更新您的数据源。

答案 1 :(得分:0)

Clear sample可在此处获取。首先从数据源中删除,然后从视图中删除这些indexPath。 2步操作,应按相同的顺序进行。