1

我在 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:”是什么感到困惑。这是委托方法吗?编译器警告它未声明。我不知道从这里去哪里。

任何帮助表示赞赏。

4

2 回答 2

2

在它说“临时数组”的地方,我替换了集合视图用作其数据源的数组来确定要显示的单元格的数量。

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

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

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

于 2013-04-04T16:13:13.450 回答
0

此处提供了清晰的样品。首先从数据源中删除,然后从视图中删除那些 indexPath。2步操作,应按相同顺序进行。

于 2013-10-26T17:58:24.067 回答