2012-03-28 12 views
2

テーブルビューにセクションが1つしかない場合でも、インデックス付きスクロールを設定することができます。私は50以上のソートされたテーブルエントリを持っていて、以下のようにA、B、C、Dなどを始めて行にジャンプしたいと思っています - これはかなり新しく、私が持っているものは近いですが、手伝ってくれますか ?次のように1セクションでのインデックス作成

私のコードは次のとおりです。 -

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]を見てください。 –

+0

「正しく動作しない」とは、私たちが助けてくれるほど十分な情報だと誰かが思っているとき、私はいつも驚いています。 – sosborn

答えて

4

インデックスを返しません。ただ存在するセクションインデックスではない1を返します。また、if判定を削除する必要があります。 これは、セクションのスクロールが機能しないようにします。次に、自分のセルに手動でスクロールすることができます。私はあなたがセルを見つけるためにインデックスを使用するだけでなく、選択されたアルファベットで最初の一致を見つける必要があると思います。

以下のコメントに答えるには 私のプロジェクトでは完璧に動作します。ここに私の流れがあります、それがあなたを助けることを願って: あなたはそのテーブルに1つのセクションがあるとします。

- (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とアダムです、私は十分に明示的ではなかった、謝罪、私はこれに非常に新しいです。何が起こっていたのかは、インデックスをクリックしたときにスクロールダウンすることでしたが、そのたびに1行または2行しか表示されませんでした。記事から、関連する文字で始まるテーブルエントリまでスクロールすることになると思ったが、そのコードからどのように情報が疑われているのか分からなかった....... yibuyiqu - インデックスの代わりに1を返すだけでスクロールするたびに上から何も表示されません。あなたの援助は非常に高く評価されます。 – user1238198

+0

yibuyiqu:あなたの投稿をありがとう。それは理にかなっている。私はこれを実装する際に問題があります。(Object * objは(NSObject * objで置き換えることを提案しています)これはまだ有効ですか?obj.YOURNAMEを代入すると配列名を使用する必要があります。 (Object * obj in 'arrrayname'){。これらが本当に基本的なqの場合はお詫び申し上げます、私はまだ非常に初心者です...ありがとうございます... – user1238198

+0

yibuyiqu:私はこの最後の問題を釘で打つことができれば、 – user1238198

関連する問題