Загрузка последних сообщений внизу и установка кнопки «Загрузить старое сообщение» для загрузки старых сообщений в TableView. - PullRequest
1 голос
/ 21 февраля 2012

Мне нужно показывать сообщения в хронологическом порядке (последние в нижней части), но нужно отображать последние 20, и должна быть кнопка «загрузить старые» в верхней части, чтобы получить более старые.

Но для выборки из основных данных мы могли бы указать дескриптор сортировки, на основе которого он выбирал или более старый, или недавний, проблема в том, что он сортирует в указанном порядке.

т.е. Если я получаю последние сообщения, это сообщение помещается сверху, а не снизу.

Есть ли способ поиска от недавнего к старшему, но показ от старшего к недавнему (хронологический порядок)?

Код: NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]; дает в хронологическом порядке, но ищет от старого к недавнему.

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO]; дает в обратном хронологическом порядке, но ищет от недавнего к старшему.

Мне нужен хронологический порядок, в котором поиск происходит от недавнего к старшему на основе отметки времени.

Подробнее код:

-(void) loadMoreContent{ // to load older messages
    numberOfCells += 10; //number of rows
    int tempNumofCells=(signed)[self.group.messages count]; // total number of messages
    if (tempNumofCells-numberOfCells >=0) { // number of cells that we are showing is lesser
        ;
    }
    else numberOfCells = tempNumofCells;

    //--making a performFetch Request to fill up above cells--
    NSError* error;
    if (![self.fetchedResultsController performFetch:&error]) {
        exit(-1); // Fail
    }
}

- (NSFetchedResultsController *)fetchedResultsController {
    if (_fetchedResultsController != nil) {
        //change the fetchRequest (fix for a bug result of constant fetched objects from fetchedController)
       if (((signed)[self.group.messages count] - numberOfCells) > 0) {
            [_fetchedResultsController.fetchRequest setFetchOffset:[self.group.messages count] - numberOfCells];
        }
        else  [_fetchedResultsController.fetchRequest setFetchOffset:0];

        return _fetchedResultsController;
    }
    .
    .
    .
  }

...

'setFetchOffset' сработал, потому что я говорю fetchedController для выборки сообщений из указанного индекса (который установлен в loadMoreContent ()), снова число numberOfRows таблицы определяется переменной numberOfCells и fetchedResults fetchedController.

Спасибо ..

1 Ответ

0 голосов
/ 21 февраля 2012

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

Или в вашем cellForRowAtIndexPath вместо возврата объекта в позиции indexRow, верните объект в вашем массиве, который находится в позиции (arrayLength - indexRow), который вернет его в противоположном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...