Вы можете использовать это
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
которая сообщает таблице, какой раздел соответствует заголовку / индексу раздела (например, "B", 1))
Этот метод предназначен для возврата раздела, соответствующего заголовку. Но вы хотите прокрутить строку вашего отдельного раздела в соответствии с этими названиями.
Поэтому выполните следующие действия:
Создать глобальный массив означает объявить его в файле .h
NSMutableArray *alphabetsArray;
NSMutableArray *dataArray; //--This contain your cell value i.e. Honda,Mazda--//
Определите его в методе viewDidLoad
, как показано ниже, затем верните его из метода UITableView.
alphabetsArray = [[NSMutableArray alloc] init];
[alphabetsArray addObject:@"A"];
[alphabetsArray addObject:@"B"];
[alphabetsArray addObject:@"C"];
[alphabetsArray addObject:@"D"];
[alphabetsArray addObject:@"E"];
[alphabetsArray addObject:@"F"];
[alphabetsArray addObject:@"G"];
[alphabetsArray addObject:@"H"];
[alphabetsArray addObject:@"I"];
[alphabetsArray addObject:@"J"];
[alphabetsArray addObject:@"K"];
[alphabetsArray addObject:@"L"];
[alphabetsArray addObject:@"M"];
[alphabetsArray addObject:@"N"];
[alphabetsArray addObject:@"O"];
[alphabetsArray addObject:@"P"];
[alphabetsArray addObject:@"Q"];
[alphabetsArray addObject:@"R"];
[alphabetsArray addObject:@"S"];
[alphabetsArray addObject:@"T"];
[alphabetsArray addObject:@"U"];
[alphabetsArray addObject:@"V"];
[alphabetsArray addObject:@"W"];
[alphabetsArray addObject:@"Y"];
[alphabetsArray addObject:@"X"];
[alphabetsArray addObject:@"Z"];
[ Примечание: Вы также можете создать alphabetsArray с динамическим
содержит в соответствии с dataArray . Для этого следуйте Как мы можем
создать динамический массив заголовков разделов ниже]
Теперь используйте вышеупомянутый метод, чтобы получить заголовок
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return alphabetsArray;
}
Напишите свою логику для прокрутки UITableView
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
for (int i = 0; i< [dataArray count]; i++) {
// Here you return the name i.e. Honda,Mazda
// and match the title for first letter of name
// and move to that row corresponding to that indexpath as below
NSString *letterString = [[dataArray objectAtIndex:i] substringToIndex:1];
if ([letterString isEqualToString:title]) {
[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
break;
}
}
return -1;
}
**** Как мы можем создать динамический массив заголовков разделов ****
Предположим, что dataArray такой
[@"Honda",@"Maruti",@"Mazda",@"Toyota",.....]
Создайте метод для создания динамического массива заголовков индекса раздела, как показано ниже
- (void)createAlphabetArray;
Реализует createAlphabetArray
метод, как показано ниже
#pragma mark - Create Alphabet Array
- (void)createAlphabetArray {
NSMutableArray *tempFirstLetterArray = [[NSMutableArray alloc] init];
for (int i = 0; i < [dataArray count]; i++) {
NSString *letterString = [[dataArray objectAtIndex:i] substringToIndex:1];
if (![tempFirstLetterArray containsObject:letterString]) {
[tempFirstLetterArray addObject:letterString];
}
}
alphabetsArray = tempFirstLetterArray;
[tempFirstLetterArray release];
}
Теперь просто вызывайте его в любом месте, если вы хотите изменить alphabetsArray содержит
[self createAlphabetArray];
Теперь вы можете динамически создавать массив заголовков указателей разделов в соответствии с содержимым вашего dataArray.