UITableView索引滚动问题

时间:2012-10-06 00:14:17

标签: iphone objective-c ios uitableview

我正在尝试索引表并在单击索引条目时滚动到正确的行。该表在每行中有一个字母A..Z。该指数也有A..Z。向下滚动时可以正常工作。例如,当我点击索引中的“H”时,表格会滚动,以便H是第一行,但现在当我点击“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;

}

2 个答案:

答案 0 :(得分:3)

试试这个...... 我这样做..

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

答案 1 :(得分: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];

足以实现这个目标