...通过参考UICollectionView 文档
您可以完成:
插入、删除和移动部分和项目 要插入、删除或移动单个部分或项目,请执行以下步骤:
- 更新数据源对象中的数据。
- 调用集合视图的适当方法来插入或删除部分或项目。
在通知集合视图任何更改之前更新数据源至关重要。集合视图方法假定您的数据源包含当前正确的数据。如果没有,collection view 可能会从您的数据源接收到错误的项目集,或者请求不存在的项目并使您的应用程序崩溃。当您以编程方式添加、删除或移动单个项目时,集合视图的方法会自动创建动画以反映更改。但是,如果您想同时为多个更改设置动画,则必须在一个块内执行所有插入、删除或移动调用,并将该块传递给 performBatchUpdates:completion: 方法。然后,批量更新过程会同时为您的所有更改设置动画,您可以自由混合调用插入、删除、
从您的问题:例如,您可以注册一个手势识别器,并通过执行以下操作插入一个新单元格:
在
// in .h
@property (nonatomic, strong) NSMutableArray *data;
// in .m
@synthesize data
//
- (void)ViewDidLoad{
//....
myCollectonView.dataSource = self;
myCollectionView.delegate = self;
data = [[NSMutableArray alloc] initWithObjects:@"0",@"1", @"2" @"3", @"4",
@"5",@"6", @"7", @"8", @"9",
@"10", @"11", @"12", @"13",
@"14", @"15", nil];
UISwipeGestureRecognizer *swipeDown =
[[UISwipeGestureRecognizer alloc]
initWithTarget:self action:@selector(addNewCell:)];
swipeDown.direction = UISwipeGestureRecognizerDirectionDown;
[self.view addGestureRecognizer:swipeDown];
//..
}
-(void)addNewCell:(UISwipeGestureRecognizer *)downGesture {
NSArray *newData = [[NSArray alloc] initWithObjects:@"otherData", nil];
[self.myCollectionView performBatchUpdates:^{
int resultsSize = [self.data count]; //data is the previous array of data
[self.data addObjectsFromArray:newData];
NSMutableArray *arrayWithIndexPaths = [NSMutableArray array];
for (int i = resultsSize; i < resultsSize + newData.count; i++) {
[arrayWithIndexPaths addObject:[NSIndexPath indexPathForRow:i
inSection:0]];
}
[self.myCollectionView insertItemsAtIndexPaths:arrayWithIndexPaths];
} completion:nil];
}