我有一个包含 10 个元素的数组。我可以将其设置为集合视图中的项目。现在我想添加第 11 个元素,这将是一个按钮。
我怎样才能做到这一点?
我这样做的方法是
collectionView:numberOfItemsInSection:
返回比我数组中实际拥有的多一项。然后我在里面做了一个测试
collectionView:cellForItemAtIndexPath:
查看 indexPath.row == myArray.count 是否。如果是这样,您知道是时候在最后添加特殊按钮单元格了。否则,您只是将另一个真实单元格添加到集合视图中。
- (NSInteger) collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section
{
return self->myArray.count + 1;
}
- (UICollectionViewCell*) collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath
{
if(indexPath.row < self->myArray.count)
{
//add regular cell to the list
}
else
{
//at the end so add special button cell to the list
}
}
我不建议您在呈现集合视图之前简单地向数组添加一个虚拟对象。这是我尝试的第一个方法。确保它在正确的时间出现在列表中,而不是在正确的时间出现在列表中,这是一个很大的痛苦。尤其是如果您要持久化该对象列表,则很容易陷入意外持久化虚拟对象的情况。
如果我理解得很好,你应该:
但是,当您可以将单元格“作为”按钮与 didSelectItemAtIndexPath: 方法一起使用时,避免 UICollectionViews 中的按钮是合理的。
如果您通过数组填充集合视图,那么要添加额外的项目或新项目,只需将其添加到您的数组中,通过该数组在方法中使用该数组填充集合视图cellForItemAtIndexPath:
,这样您就可以包含您的收藏视图中的一个新单元格。