「ドット」が固定カラーであることを気にしない限り、これは既に提供されている方法で実現できます。あなたは必要なだけ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
動きを持つことができるようになります。繰り返しますが、すべてを完全に並べるためには少しの数学をしなければなりません。
希望すること!
ありがとうございます。それを試みます。私が持っている唯一の問題は、私のTableViewが単一のセクションであることです。複数のセクションに分割すると、セクションごとにヘッダーを付ける必要がありますか、それとも1つの大きなセクションとして表示させることができますか? –
各セクションにヘッダーは必要ありません。 ' - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)セクション;'メソッドで 'nil'を返すだけです。 – msgambel