我有一个使用字母滚动的UITableView,但是当我在特定字母上标签时它没有这样做。作为样本,如果我在“G”上选项卡,它不会跳到“G”,它只是向下滚动26个字母,为什么如此呢。
我的代码
alphabetical =[NSArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z", nil];
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return alphabetical;
}
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
NSInteger newRow = [self indexForFirstChar:title inArray:alphabetical];
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:newRow inSection:0];
[tableView scrollToRowAtIndexPath:newIndexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
return index;
}
- (NSInteger)indexForFirstChar:(NSString *)character inArray:(NSArray *)array
{
NSUInteger count = 0;
for (NSString *str in array) {
if ([str hasPrefix:character]) {
return count;
}
count++;
}
return 0;
}
我觉得我的indexForFirstChar有些错误,当我添加一个断点时,它只是抛出所有字母,而不是跳到一个特定的...
我在此表格视图中没有部分
感谢您的帮助和快速回答!
答案 0 :(得分:0)
无需滚动到sectionForSectionIndexTitle
中的索引路径。只需返回index
。请参阅documentation。
另外,这里有一个小技巧:
alphabetical = [@"ABCDEFGHIJKLMNOPQRSTUVWXYZ" componentsSeparatedByString:@""];
答案 1 :(得分:0)
我自己的解决方案非常简单,或多或少没有关于它如何工作的评论
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
if (alphabetical)
{
NSMutableArray *charactersForSort = [[NSMutableArray alloc] init];
for (NSDictionary *item in employees)
{
if (![charactersForSort containsObject:[[item valueForKey:@"LastName"] substringToIndex:1]])
{
[charactersForSort addObject:[[item valueForKey:@"LastName"] substringToIndex:1]];
}
}
return charactersForSort;
}
return nil;
}
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
BOOL found = NO;
NSInteger b = 0;
for (NSDictionary *item in employees)
{
if ([[[item valueForKey:@"LastName"] substringToIndex:1] isEqualToString:title])
if (!found)
{
[_tblPersonDetail scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:b inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
found = YES;
break;
}
b++;
}
return b;
}
如果您仍有问题可以随意提问