是否可以使 "Alphabetical scroll bar - alike" 用于搜索?

Is it possible to make "Alphabetical scroll bar - alike" for search?

目前我有一个类似于 facebook 的新提要的视图,其中 post 按时间顺序列出的用户。现在我想在右侧放置字母滚动条,当用户滚动到任何字符时,他们可以搜索 post 名称以该字符开头的用户,这可能吗?

根据我的理解,如果我可以在用户滚动到每个字符并将该字符传输到服务器上的 API 以查询名称以该字符和 [=18 开头的数据库时捕获事件,则可以解决=] 它返回到设备上显示。

谁能给我一些提示!

你想要做的是一种非常不寻常的用户界面类型,但如果你真的想这样做,你可以做以下事情(你可以找到教程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: „一个字符串数组,在table视图中用作章节标题并出现在右侧的索引列表中table 视图。 table 视图必须是普通样式 (UITableViewStylePlain)。例如,对于按字母顺序排列的列表,您可以 return 一个包含字符串“A”到“Z”的数组。

如何将数据分类到 tableView 的部分完全取决于您。在您的情况下,您希望将所有时间排序的数据放在一个部分中,可能没有特殊的 header。因此,您的数组 characters 以索引 0 处的 header @" " 开头,并且您将所有按时间排序的条目放在第 0 部分中。 然后,实现下面的方法:

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

这个方法可能有点混乱。它执行以下操作:当用户点击 tableView (@" " … @"Z") 数组 characters 中某个字符一侧的索引时,该字符在数组中的位置 (它的索引)是该方法的输入。您可以将其存储在 属性 中。如果您像示例中那样 return 0,table 的第 0 部分将按原样重新显示。
如果您对 属性 savedTappedIndex 进行键值观察 (KVO),您将在 table 重新显示时收到通知。然后您可以通过

读取点击的字符
NSString *tappedCharacter = characters[self.savedTappedIndex];  

有了这个字符,您可以向您的服务器查询供稿,这些供稿是由名称以此字符开头的用户创建的。
然后数据可以显示在 tableView 中,再次显示在第 0 部分中。
当然,您不应再在 tableView 旁边显示索引。

再一次,这种行为可能会让用户非常困惑,因为它很不寻常。

最后的注释:

您不应该将上面的 hack 用于实际实现,但您可以使用它来测试您的用户界面,您可能会发现用户体验不好,因为索引的行为与往常不同。