0

我有一个包含 10 个元素的数组。我可以将其设置为集合视图中的项目。现在我想添加第 11 个元素,这将是一个按钮。

我怎样才能做到这一点?

4

3 回答 3

1

我这样做的方法是

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
    }
}

建议您在呈现集合视图之前简单地向数组添加一个虚拟对象。这是我尝试的第一个方法。确保它在正确的时间出现在列表中,而不是在正确的时间出现在列表中,这是一个很大的痛苦。尤其是如果您要持久化该对象列表,则很容易陷入意外持久化虚拟对象的情况。

于 2014-02-06T21:30:53.943 回答
0

如果我理解得很好,你应该:

  1. 子类 UICollectionViewCell 并为按钮添加一个 IBOutlet;
  2. 添加一个新的原型单元,对其进行设计,为您的自定义类设置类并连接插座;
  3. 如果 indexPath.item 为 10,则修改 cellForItemAtIndexPath: 以包含您的 newCell;

但是,当您可以将单元格“作为”按钮与 didSelectItemAtIndexPath: 方法一起使用时,避免 UICollectionViews 中的按钮是合理的。

于 2013-04-07T12:14:57.970 回答
0

如果您通过数组填充集合视图,那么要添加额外的项目或新项目,只需将其添加到您的数组中,通过该数组在方法中使用该数组填充集合视图cellForItemAtIndexPath:,这样您就可以包含您的收藏视图中的一个新单元格。

于 2013-04-09T09:21:42.713 回答