Упорядочить ячейку таблицы по субтитрам - PullRequest
5 голосов
/ 11 января 2012

Я получаю расстояние в 2 очка вот так

[userLocation distanceFromLocation: annotationLocation] / 1000;

и настройте его на подзаголовок табличного представления, как на изображении ниже скриншот http://i41.tinypic.com/ruxv74.png

вопрос в том, могу ли я заказать эту таблицу по расстояниям (субтитрам)?

Спасибо!

и извините за плохой английский = x

Ответы [ 4 ]

6 голосов
/ 11 января 2012

Вы можете заказать ячейки вашего UITableView любым удобным для вас способом, но вы должны сделать это, прежде чем показывать их, когда создаете источник данных таблицы. Если вы используете NSFetchResultsController, вы можете указать расстояние как дескриптор сортировки. И если вы используете простой NS (Mutable) Array, отсортируйте его, прежде чем сделать его источником таблицы.

Как сказал Крис, вы можете сделать это с

NSSortDescriptor *titleSorter= [[NSSortDescriptor alloc] initWithKey:@"annotationLocation" ascending:YES];

Если вы используете NSArray, то:

[arrayOfObjects sortUsingDescriptors:[NSArray arrayWithObject:titleSorter];

и, если это NSFetchResultsController:

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:titleSorter, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
1 голос
/ 11 января 2012

Создайте NSSortDescriptor для сортировки строк:

NSSortDescriptor *titleSorter= [[NSSortDescriptor alloc] initWithKey:@"annotationLocation" ascending:YES];
[arrayOfObjects sortUsingDescriptors:[NSArray arrayWithObject:titleSorter];
0 голосов
/ 11 января 2012

Предполагая, что у вас есть некоторые определенные объекты, содержащие координаты и помещающие объекты в местоположения массива, вы можете использовать блок компаратора, выполнив:получать обновленные местоположения каждый раз, когда вы отображаете tableView.

0 голосов
/ 11 января 2012

Создайте массив с этими расстояниями, упорядочите его так, как вы хотите, и

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"cellIdentifier";
    UITableViewCell *_cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (_cell == nil) {
        _cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier] autorelease];
    }
    _cell.textLabel.text = @"Transcripts";
    _cell.detailTextLabel.text = [yourArray objectAtIndex:indexPath.row];
    return _cell;
}

ну, что-то подобное должно сработать.

Надеюсь, это поможет

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