5

コアデータが入力されたテーブルを実装しましたが、現在、側面のアルファベットを(連絡先のような形式で)表示することにより、セクションでインデックスを作成しようとしています。

以下のコードでは、コメント行を使用すると、既存のセクションの文字しかありません。しかし、アルファベット全体が必要なので、返される配列を変更しました。

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{    
    //return [fetchedResultsController sectionIndexTitles];    

    indexArray = [NSArray arrayWithObjects: @"{search}", @"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J",@"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z", @"#", nil];
    return indexArray;
}

すべての文字がサイドインデックスに表示されます。しかし、ここで、選択したセクションのインデックスを返すメソッドを実装する必要があります。ここで、いくつかの問題があります。

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
    //return [fetchedResultsController sectionForSectionIndexTitle:title atIndex:index];

    NSString *correspondingLetter = [indexArray objectAtIndex:index];
    NSUInteger correspondingIndex = [[fetchedResultsController sections] indexOfObject:correspondingLetter];

    NSLog(@"------index:%i\ncorrespondingLetter: %@\ncorrespondingIndex: %i\n", index,correspondingLetter, correspondingIndex);

    return correspondingIndex;
}

上記のコードでは、コメント行を使用すると、対応するセクションがない文字を選択するたびにエラーが発生します。だから私がやろうとしているのは、選択された文字を使用してセクションインデックスを取得し、その位置を既存のセクションで検索することです。しかし、それは機能しません。あなたはなにか考えはありますか?

よろしくお願いします、yassa

4

2 に答える 2

5

あなたはで検索する必要があります

@property (nonatomic, readonly) NSArray *sectionIndexTitles

fetchedResultControllerの。
ただし、それが存在しないインデックスである場合は、受け取ることNSNotFoundになり、前の文字のインデックス、前の、または前のインデックスなどを返すために何らかのロジックを実行する必要があります。

于 2011-12-30T18:38:05.567 に答える
2

追加の言語をサポートするために、ハードコードされた文字は使用しません。受け入れられた答えに触発された私の解決策:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return [[UILocalizedIndexedCollation currentCollation] sectionIndexTitles];
}


- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
    NSString *correspondingLetter = [[[UILocalizedIndexedCollation currentCollation] sectionIndexTitles] objectAtIndex:index];
    return [[self.fetchedResultsController sectionIndexTitles] indexOfObject:correspondingLetter];
}
于 2013-10-17T22:30:59.670 に答える