1

テーブルのインデックスを作成し、インデックス エントリがクリックされたときに正しい行にスクロールしようとしています。テーブルには、A..Z の文字が各行に 1 つずつあります。インデックスにはA..Zもあります。下にスクロールしながら動作します。たとえば、インデックスの「H」をクリックすると、H が最初の行になるようにテーブルがスクロールしますが、「A」をクリックすると、画面の半分に空白があり、行が中央に表示されます。何故ですか?私は新しいメンバーなので、写真を投稿することはできません。

セクションは 1 つしかありません。セクション数には 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 as 何の質問から

  • UITableViewデータソースとデリゲートを見てください
  • テーブルを正しくセットアップする

Indexpath には行とセクションの 2 つのパラメータがあります

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

didSelectRowAtIndexpath メソッドには、インデックスパスがあり、クリックするとスクロールするため、

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

これを達成するのに十分でしょう

于 2012-10-06T04:28:45.277 に答える