8

UItableViewの右側に表示されるセクションインデックスで単語をラップしたいと思います。

問題は、単語の長さが増加すると、セクション インデックスの幅も増加し、テーブル ビューのセル コンテンツ ビューのサイズが縮小することです。また、セクション インデックス配列オブジェクトの部分文字列を表示したくありません。セクション i に単語全体を表示したいので包む必要があります。

-(NSArray*) sectionIndexTitlesForTableView:(UITableView *)tableView
{
    NSMutableArray *array = [[NSMutableArray alloc] init];

    for (int i = 0; i <[keys count]; i++) {
        NSString *str = [self.keys objectAtIndex:i];
           [array addObject:str];
    }

    NSArray *a =[NSArray arrayWithArray:array];
    [array release];
    return a;
}

sectionIndextitle メソッドが返す配列内のオブジェクトが長く、単語をラップしたい。

誰でもそれを行う方法を知っていますか?

ここに画像の説明を入力

4

5 に答える 5

2

カスタムUIViewとして独自の「セクションインデックスビュー」のみを作成できます

そしてそれをするのは簡単です

テーブルビューの高さを計算し、セクションの数を計算するだけです

次に、セクションのタイトルをその上に描きます

- (void)drawRect:(CGRect)rect

次に、タッチイベントを検出します

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

触れたセクションを計算してから、tableviewメソッドを呼び出します

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;

次に、それをテーブルビューに配置してください。

于 2012-05-08T09:11:07.410 に答える
0

strに追加する前に「 」を確認してくださいNSMutableArray。1 つ以上の単語が含まれていますか? 必要な範囲を選択して、配列に追加します。

各セクションのインデックスNSmakeRangeに表示する文字の範囲を作成するために使用します。

于 2012-05-09T15:15:49.703 に答える
0

セクション インデックスを複数の行に折り返すことはできません。これは、デフォルトの UI では意味がありません。これを実現するには、カスタム ヘッダーが最適です。

于 2012-05-07T20:01:23.873 に答える
0

あなたの答えはノーのようですが、以下はあなたの質問の背後にある問題を解決するはずです.

UITableViewDelegate プロトコルで tableView:viewForHeaderInSection: の代わりにこの関数を使用します。詳細については、UITableViewDelegate Docsのドキュメントを参照してください。注 – tableView:heightForHeaderInSection: も実装する必要があります。この関数の組み合わせにより、numberOfLines が 0 (必要な数) に設定された UILabel サブビューと、テキストが必要な値に設定されたビューを返すことができます。

于 2012-05-04T17:34:24.903 に答える
0

セクションのカスタム タイトル ヘッダーを作成します。そこでは、ラベルを使用して、タイトルの長さに基づいて行数を割り当てることができます。それに応じて、セクション ヘッダーの高さも設定する必要があります。

于 2012-05-08T09:17:44.970 に答える