добавить дополнительные ячейки внизу UICollectionView

Я использую UICollectionView, чтобы получить набор изображений из instagram, однако я хочу загрузить прошлые изображения, когда доберусь до нижней части страницы. Однако я получаю прошлые изображения, потому что они зарегистрированы в консоли, но не отображаются на экране.

Вот мой код для получения изображений:

- (void)nextInstagramPage:(NSIndexPath *)indexPath{
NSDictionary *page = self.timelineResponse[@"pagination"];
NSString *nextPage = page[@"next_url"];

[[InstagramClient sharedClient] getPath:[NSString stringWithFormat:@"%@",nextPage] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    self.timelineResponse = responseObject;
    [self.collectionView reloadData];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failure: %@", error);
}];

}

Вот мой код для определения того, когда пользователь доходит до нижней части экрана:

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{

[self nextInstagramPage:indexPath];

}

Правка: я обнаружил, что представление коллекции является подклассом uiscrollview, так как мне правильно реализовать метод, который имеет индексный путь для обнаружения нижней части представления прокрутки!


person Prad    schedule 26.07.2013    source источник
comment
Вы уверены, что didEndDisplayingCell делает это? похоже, что этот метод вызывается, когда элемент перемещается за пределы экрана...   -  person A'sa Dickens    schedule 26.07.2013
comment
когда этот метод вызывается, вы можете проверить, является ли последняя ячейка в вашем представлении коллекции частью свойства массива visibleCells представления коллекции.   -  person A'sa Dickens    schedule 26.07.2013
comment
этот метод (в документации) называется «Используйте этот метод, чтобы определить, когда ячейка удаляется из представления коллекции, в отличие от наблюдения за самим представлением, чтобы увидеть, когда оно появляется или исчезает». так что это, вероятно, вызывается, когда ячейка больше не выделяется, иначе она была исключена из очереди.   -  person A'sa Dickens    schedule 26.07.2013
comment
поместите тест в collectionView:cellForItemAtIndexPath: и когда вы выделили последнюю ячейку, затем вызовите свой метод, чтобы показать больше изображений   -  person A'sa Dickens    schedule 26.07.2013
comment
не могли бы вы показать полный пример в качестве ответа, пожалуйста?   -  person Prad    schedule 26.07.2013


Ответы (1)


В вашем коде я делаю 2 предположения: у вас есть массив данных для параллельной работы с представлением коллекции пользовательского интерфейса и методами делегата/источника данных. вы бы заметили по крайней мере эти два метода в своем коде.

– collectionView:numberOfItemsInSection:
– collectionView:cellForItemAtIndexPath:

первый сообщает вам, сколько элементов/ячеек/квадратов вы видите в представлении коллекции пользовательского интерфейса, второй позволяет вам создать, как будет выглядеть элемент/ячейка/квадрат.

В первом методе вы сообщили представлению uicolelction, сколько их было, а в элементе ячейки вы должны проверить, «является ли это последним изображением», если это последнее изображение, а затем загрузить больше изображений, если это не последнее изображение, тогда продолжайте, как если бы ничего не произошло

Редактировать:

[[self entries] count]

у вас было это, теперь с ячейкой для строки в индексном пути сделайте

if ( indexpath.item == ([[self entries] count] - 1) ) {
   // download more data and add it to the 'entries' array
}
person A'sa Dickens    schedule 26.07.2013
comment
как добавить объект; я знаю, что мы добавляем объект в изменяемый массив, но мой объект ответа, который содержит данные, находится в другом методе - person Prad; 27.07.2013
comment
- (void) nextInstagramPage: (NSIndexPath *) indexPath { NSDictionary * page = self.timelineResponse[@pagination]; NSString *nextPage = страница[@next_url]; [[InstagramClient sharedClient] getPath: [NSString stringWithFormat: @%@, nextPage] параметры: ноль, успех: ^ (AFHTTPRequestOperation * operation, id responseObject) { [self.collectionView cellForItemAtIndexPath: indexPath]; self.timelineResponse = responseObject; [self.collectionView reloadData]; } сбой: ^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@Failure: %@, error); }]; } - person Prad; 27.07.2013