2012-03-28 77 views
2

不知您是否可以帮助我,我已经读过,即使您的表格视图中只有1个部分,也可以设置索引滚动。我有很多排序表条目(超过50),并希望跳转到下面的行开始A,B,C,D等 - 我对此很新,我有什么是接近,但它不能正常工作 - 你能帮我吗 ?UITableview Indexing with 1 section

我的代码如下: -

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

它是如何“不能正常工作”?另外,请看[(NSArrary *)initWithObjects:...,nil]; – 2012-03-28 22:58:26

+0

当有人认为“工作不正常”对我们来说是足够的信息来帮助他们时,我总是很惊讶。 – sosborn 2012-03-29 00:32:47

回答

4

不要回报指数。只需返回1,这不是存在的部分索引。另外,需要删除if判断。 这使得部分滚动不起作用,然后您可以手动滚动到您自己的单元格。我认为你需要找到与选定的字母表的第一场比赛,而不仅仅是使用索引来定位单元格。

要回答以下评论: 它在我的项目中完美。这里是我的流程,希望它能帮助你: 假设你在该表中只有一个部分。

- (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; 
} 
+0

你是对的sosborn和亚当,我不够明确,道歉,我很新。发生了什么事情是当我点击索引时,它会向下滚动,但每次只有一行或两行。从一篇文章中,我认为它会滚动到相关信件开始的表条目,但我不明白从代码如何怀疑信息....... yibuyiqu - 返回1而不是索引只是滚动1从顶部开始每行一行,仅此而已。非常感谢您的帮助。 – user1238198 2012-03-29 19:53:21

+0

yibuyiqu:感谢您的留言。这说得通。我遇到了麻烦实现这一点,Xcode是抛出一个错误(对象* obj暗示我用(NSObject * obj替换。这仍然有效吗?也代替obj.YOURNAME时,我应该只使用我的数组名称,相同对于(Object * obj in'arrrayname'){。我很抱歉,如果这些都是非常基本的问题,我仍然是一个新手!非常感谢你... – user1238198 2012-03-30 23:38:09

+0

yibuyiqu:如果我能指出最后一个问题,我的问题是否有意义?谢谢。 – user1238198 2012-04-01 12:45:13