2016-01-05 9 views
5

現在、私はFacebookの新しいフィードのようなビューを持っています。今すぐ右側にアルファベット順のスクロールバーを置いて、ユーザーが任意の文字にスクロールすると、その文字で始まる名前のユーザーが投稿を検索できますか?検索に「アルファベット順のスクロールバー - 類似」を使用することはできますか?

ユーザーが各キャラクターにスクロールしてそのキャラクターをサーバー上のAPIに転送して、その名前で始まるDBを照会し、それをデバイスに表示するために戻すときに、イベントをキャプチャできれば解決できる可能性があります。

いずれかのヒントをお願いします。

+0

"UITableViewセクションインデックス"を検索する必要があります。あなたが話しているインデックスは、iOSの一部であり、かなり簡単に実装することができます。 Stack Overflowで数回答えられました。 – Fogmeister

+0

あなたの方法を使用することで、私は通常ビューをアルファベット順に並べ替える必要があると思っています。スクロールするだけで各セクションにすばやくジャンプできます。私の質問は日時順のリストについてですが、スクロールするときはアルファベット順に並べ替えます。 – user1314404

+0

ああそうです。それを行うことでiOSの基本的な動作を破っていることに心配していませんか?ユーザーが画面の右側にアルファベット順のリストを表示すると、8年以上の経験によって、リストをすばやくスクロールできます。それをあなたが提案している方法で変更することによって、あなたのアプリは壊れているように見え、ユーザーはそれを使用しないようにすることができます。 – Fogmeister

答えて

5

何がやりたいこと(チュートリアルhereを見つけることができます)ユーザーインターフェースのはかなり珍しいタイプですが、あなたが本当にこれを実行したい場合は、次の操作を実行できます。
あなたtableViewControllerで 、インデックスを作成しますアレイ、例えばあなたはtableViewの横に表示させたいのアルファベット文字、例えば配列:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { 
    NSARRAY *characters = @[@" ", "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"]; 
    return characters; 
} 

docsによると:「テーブルビュー内のセクションのタイトルとして使用する文字列の配列とテーブルビューの右側にあるインデックスリストに表示されます。テーブルビューはプレーンスタイル(UITableViewStylePlain)でなければなりません。たとえば、アルファベット順のリストの場合、文字列 "A"から "Z"を含む配列を返すことができます。 "

tableViewのセクションにデータを並べ替える方法は完全にあなた次第です。あなたのケースでは、おそらく特別なヘッダーなしで、すべての時間を1つのセクションにソートする必要があります。したがって、あなたの配列がcharactersインデックス0のヘッダ@" "で始まり、あなたの時間のすべてを置くには、次のメソッドを実装し、その後、セクション0 のエントリをソート:

- (NSInteger)tableView:(UITableView *)tableView 
       sectionForSectionIndexTitle:(NSString *)title 
       atIndex:(NSInteger)tappedIndex { 
    self.savedTappedIndex = tappedIndex; 
    return 0; 
} 

をこの方法では、少し混乱を招くことがあります。 tableView@" " … @"Z")の配列のある文字をユーザがタップすると、配列内のこの文字の位置(インデックス)がこのメソッドに入力されます。それをプロパティに格納することができます。この例のように0を返すと、テーブルのセクション0はそのまま再表示されます。
プロパティsavedTappedIndexのキー値監視(KVO)を実行すると、テーブルが再表示されたときに通知が表示されます。あなたはこの文字で

NSString *tappedCharacter = characters[self.savedTappedIndex]; 

でタップの文字を読むことができます、あなたは名前がこの文字で始まるユーザーによって作成された飼料用のサーバーを問うことができます。
tableViewのセクション0にデータを表示することができます。
もちろん、tableViewの横にインデックスを表示しないでください。

これは非常に珍しいので、この動作はユーザーにとって非常に混乱する可能性があります。

最後の注意:

あなたが実際の実装のために上ハックを使うべきではありませんが、あなたはあなたのユーザー・インタフェースをテストするためにそれを使用することができ、そしておそらくインデックス以来、ユーザ体験は良いではないことがわかりますいつものように動作が異なります。

+0

素晴らしい答えのラインハルトありがとう!いつか私たちはアイデアを違った方法で考えて実行できることは素晴らしいことです!最高! – user1314404