UITableview Индексация с 1 разделом - PullRequest
3 голосов
/ 29 марта 2012

Интересно, можете ли вы мне помочь, я читал, что можно настроить индексированную прокрутку, даже если у вас есть только 1 раздел в табличном представлении. У меня есть много отсортированных записей в таблице (более 50) и я хочу перейти к строкам, начинающимся с A, B, C, D и т. Д., Как показано ниже - я довольно новичок в этом, и то, что у меня есть, близко, но не работает должным образом вы можете помочь ?

Мой код выглядит следующим образом: -

enter code here 
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

NSMutableArray *tempArray = [[NSMutableArray alloc] init];
[tempArray addObject:@"A"];
[tempArray addObject:@"B"];
[tempArray addObject:@"C"];
[tempArray addObject:@"D"];
[tempArray addObject:@"F"];
[tempArray addObject:@"G"];
[tempArray addObject:@"H"];
[tempArray addObject:@"J"];
[tempArray addObject:@"K"];
[tempArray addObject:@"L"];
[tempArray addObject:@"M"];
[tempArray addObject:@"P"];
[tempArray addObject:@"S"];
[tempArray addObject:@"T"];
[tempArray addObject:@"U"];
[tempArray addObject:@"V"];    
return tempArray;
}

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString     *)title atIndex:(NSInteger)index {

if(index !=0){ 
    [tableView scrollToRowAtIndexPath:[NSIndexPath
    indexPathForRow:index inSection:0] 
    atScrollPosition:UITableViewScrollPositionTop animated:TRUE];
}
return index;
}

1 Ответ

5 голосов
/ 29 марта 2012

Не возвращать индекс. Просто верните 1, который не является индексом существующего раздела. Кроме того, необходимо удалить, если решение. Это приводит к тому, что прокрутка раздела не работает, и вы можете вручную перейти к своей ячейке. Я думаю, вам нужно найти первое совпадение с выбранным алфавитом, а не просто использовать индекс для поиска ячейки.

Чтобы ответить на комментарий ниже: Это прекрасно работает в моем проекте. Вот мой поток, надеюсь, он поможет вам: Предположим, у вас есть только один раздел в этой таблице.

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
    // Find the correct index of cell should scroll to.
    int foundIndex = 0;
    for (Object *obj in dataArray) {
        if ([[[obj.YOURNAME substringToIndex:1] uppercaseString] compare:title] == NSOrderedSame || [[[obj.YOURNAME substringToIndex:1] uppercaseString] compare: title] == NSOrderedDescending)
            break;
        foundIndex++;
    }
    if(foundIndex >= [dataArray count])
        foundIndex = [dataArray count]-1;

    [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:foundIndex inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];

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