Как сделать заголовки разделов на нескольких языках - PullRequest
0 голосов
/ 15 июня 2009

У меня есть UITableView, и в нем у меня есть разные разделы - слова, начинающиеся с буквы «А», переходят в раздел «А». Слова, начинающиеся с буквы "B", переходят в раздел "B" и т. Д.

Вот мой код:

-(void) populateTable {
    if (tableDataArray)
    {
        [tableDataArray removeAllObjects];
    }

    for (int i = 0; i <= 27; i++)
    {
        NSMutableArray *words_in_section = [ [NSMutableArray alloc] init];
        [tableDataArray addObject: words_in_section];
        [words_in_section release];
    }

    int cur_section;
    int cur_word_id;

    //First section, without title
    while ( (cur_word_id = [ [WordsDatabase sharedWordsDatabase] getNextWordToEditIDABC]) != -1 )
    {
        NSMutableArray *temp_array = [tableDataArray objectAtIndex: 0];
        [temp_array addObject: [NSNumber numberWithInt: cur_word_id] ];
        [tableDataArray replaceObjectAtIndex: 0 withObject:temp_array];
    }

    //All other sections
    while ( (cur_word_id = [ [WordsDatabase sharedWordsDatabase] getNextWordIDABC]) != -1 )
    {
        cur_section = toupper([ [ [WordsDatabase sharedWordsDatabase] getWordAtID:cur_word_id] characterAtIndex:0 ] ) - 'A';
        if (cur_section < 0) cur_section = 27;
        else if (cur_section > 27) cur_section = 27;
        else cur_section++;

        NSMutableArray *temp_array = [tableDataArray objectAtIndex:cur_section];
        [temp_array addObject: [NSNumber numberWithInt: cur_word_id] ];
        [tableDataArray replaceObjectAtIndex:cur_section withObject:temp_array];
    }

    [mainTableView reloadData];
}

Я хочу добиться чего-то похожего на список музыки iPod - есть песни, отсортированные по алфавиту, и самое интересное, что список поддерживает все другие языки, кроме английского.

Как мне этого добиться? Мой код работает только с английскими буквами, а все остальные буквы присваиваются последнему разделу.

Вот как я устанавливаю заголовки:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    if ([ [tableDataArray objectAtIndex: section] count] == 0) return nil;

    UITableViewCell *header_view = [ [ [UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 20)] autorelease];

    header_view.backgroundColor = [UIColor orangeColor];

    UILabel *captionLabel = [ [ [UILabel alloc] initWithFrame: CGRectMake(10, 0, 290, 20)] autorelease];
    captionLabel.backgroundColor = [UIColor orangeColor];

    [header_view addSubview: captionLabel];

    if (section == 0)
    {
        return nil;
    } else if (section >= 27)
    {
        captionLabel.text = @"#";
        return header_view;
    } else
    {
        captionLabel.text = [NSString stringWithFormat: @"%c", section + 'A' - 1];
        return header_view;
    }

    return nil;
}

Как я могу добавить в свой код поддержку разных языков?

Заранее спасибо.

1 Ответ

0 голосов
/ 15 июня 2009

Разные языки имеют разные соглашения о том, как классифицировать слова. Например, на японском языке вы, вероятно, захотите, чтобы 10 разделов (для каждой строки таблицы катакана) или 50 или около того представляли каждый начальный элемент катаканы. Я полагаю, вы должны были бы в особом случае правила для каждого языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...