1

我正在尝试索引表并在单击索引条目时滚动到正确的行。该表的每一行都有字母 A..Z。该指数还有 A..Z. 它在向下滚动时工作。例如,当我单击索引中的“H”时,表格会滚动,因此 H 是第一行,但现在当我单击“A”时,屏幕上有一半的空白空间,然后 A 行显示在中间。这是为什么?因为我是新会员,所以不能发图片。

我只有一节。我为节数返回 1,为节行数返回 26。

我在方法 sectionForSectionIndexTitle 中的代码是

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
NSLog(@"getting called %d",index);
int position;
switch (index) {
    case 0:
        position=0;
        break;
    case 1:
        position=1;
        break;
    case 2:
        position=2;
        break;    
    case 3:
        position=3;
        break;
    case 4:
        position=4;
        break;
    case 5:
        position=5;
        break;
    case 6:
        position=6;
        break;
    case 7:
        position=7;
        break;
    case 8:
        position=8;
        break;
    case 9:
        position=9;
        break;    
    case 10:
        position=10;
        break;
    case 11:
        position=11;
        break;
    case 12:
        position=12;
        break;
    case 13:
        position=13;
        break;
    case 14:
        position=14;
        break;
    case 15:
        position=15;
        break;
    case 16:
        position=16;
        break;    
    case 17:
        position=17;
        break;
    case 18:
        position=18;
        break;
    case 19:
        position=19;
        break;
    case 20:
        position=20;
        break;
    case 21:
        position=21;
        break;
    case 22:
        position=22;
        break;
    case 23:
        position=23;
        break;    
    case 24:
        position=24;
        break;
    case 25:
        position=25;
        break;
    case 26:
        position=26;
        break;
    default:
        position=1;
        break;
}
NSLog(@"scrolling to %d",position);
[tableView reloadInputViews];
[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:position inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
return index;

}

4

2 回答 2

3

试试这个东西.....我这是工作..

    [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
    [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:position inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
于 2012-10-06T09:11:26.517 回答
0

K 来自问题

  • 查看UITableView数据源和委托
  • 正确设置表

Indexpath 有两个参数行和部分

NSIndexPath *index=[NSIndexPath indexPathForRow:position inSection:section]
[tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionTop animated:YES];

在您的 didSelectRowAtIndexpath 方法中,您将拥有 indexpath 并在单击时滚动,因此

[tableView scrollToRowAtIndexPath:indexpath atScrollPosition:UITableViewScrollPositionTop animated:YES];

将足以实现这一目标

于 2012-10-06T04:28:45.277 回答