... Ссылаясь на UICollectionView documentation
Вы можете выполнить:
Вставка, удаление И перемещение разделов и элементов для вставки, удаления, или переместить один раздел или элемент, выполните следующие действия:
- обновить данные в вашем объекте источника данных.
- Вызовите соответствующий метод представления коллекции, чтобы вставить или удалить раздел или элемент.
Крайне важно, чтобы вы обновили источник данных, прежде чем сообщать о сборе коллекции любых изменений. В методах просмотра коллекции предполагается, что ваш источник данных содержит правильные данные. Если это не нет, просмотр коллекции может получить неправильный набор элементов из вашего источника данных или попросить предметы, которых нет в наличии, и сбой вашего приложения . Когда вы добавляете, удаляете или перемещаете один элемент программным способом, методы просмотра коллекции автоматически создают анимации, отражающие изменения в . Если вы хотите анимировать несколько изменений вместе, однако, , вы должны выполнить все вставки, удаления или перемещения вызовов внутри блока, а передать этот блок методу executeBatchUpdates: 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];
}
Когда вы говорите «это ошибка», очень полезно сообщить, что это за ошибка в вашем вопросе. Обычно полезно также видеть фактический код, а не только некоторый текст, смутно описывающий его. – Flexo
Хорошо прочитайте код в ближайшее время. спасибо Flexo –