2011-12-31 8 views
2

私がしようとしているのは、UITableViewインデックスの外観をカスタマイズすることです。いくつかの検索の後、私はこれが不可能であるという結論に至り、以下のスクリーンショットのようなものを達成するためにカスタムビューを作成しなければなりません。カスタムインデックスビューを持つUITableView

example http://img705.imageshack.us/img705/8573/57screenshot20111231at9.png

私のテーブルビューは、セクションを持っているので、私は何をしたいの小さなドットの一つがタップされたときにダウンしているか、1つ上の「ページ」をスクロールすることはありません。また、標準のテーブルビューのインデックスと同じように、ページをすばやく表示するために、ビューをスワイプすることもできます。

私に、これと似たような例や、どこから始めるべきかのガイドラインを提供していただければ、感謝します。

答えて

4

「ドット」が固定カラーであることを気にしない限り、これは既に提供されている方法で実現できます。あなたは必要なだけ2つのメソッドを使用します。また、あなたは選択された「ドット」の上に持って透明画像を保持しているUIImageViewが必要になります

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView; 

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index; 

最初の方法では[NSArray arrayWithObjects:@".", @".", ..., @".", nil];という形式のNSArrayを返します。これはサイドバーの「dots」に入力され、各ドットはUITableViewの1つのセクションを表します。ユーザーが「ドット」のいずれかをタップすると、UITableViewは対応するセクションに移動します。各セクションを1ページの長さにしたいので、それに応じてデータを区切ります。

2番目の方法では、選択したドットをカバーする透明イメージを保持するUIImageViewのフレームを調整します。 .frame.プロパティを変更して、新しい選択したセクションと整列させてください。これを一列に並べるには数学をする必要がありますが、それはかなり簡単です。

また、ユーザーがスクロールしている間に透明イメージの移動を処理するには、UIScrollViewDelegateメソッドを使用する必要があります。彼らは以下のとおりです。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView; 

これらは、ユーザーがスクロールしている間、あなたは適切なセクションにUIImageView動きを持つことができるようになります。繰り返しますが、すべてを完全に並べるためには少しの数学をしなければなりません。

希望すること!

+0

ありがとうございます。それを試みます。私が持っている唯一の問題は、私のTableViewが単一のセクションであることです。複数のセクションに分割すると、セクションごとにヘッダーを付ける必要がありますか、それとも1つの大きなセクションとして表示させることができますか? –

+0

各セクションにヘッダーは必要ありません。 ' - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)セクション;'メソッドで 'nil'を返すだけです。 – msgambel

関連する問題