当前位置:  开发笔记 > 运维 > 正文

是否有可能使"按字母顺序滚动条 - 相似"进行搜索?

如何解决《是否有可能使"按字母顺序滚动条-相似"进行搜索?》经验,为你挑选了1个好方法。

目前我有一个像Facebook的新饲料的视图,其中按时间顺序列出的用户发布.现在在右侧我想放置按字母顺序滚动条,当用户滚动到任何字符时,他们可以搜索名称以该字符开头的用户搜索,是否可以?

根据我的理解,当用户滚动到每个字符并将该字符传输到服务器上的API以查询名称以该字符开头的DB并将其发回到设备上显示时,我可以捕获事件.

请问任何人给我一些提示!



1> Reinhard Män..:

你想要做的是相当不寻常的类型的用户界面,但如果你真的想这样做,你可以做以下的(你可以找到一个教程这里):
在你的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;
}  

根据文档:" 一个字符串数组,用作表视图中节的标题,并出现在表视图右侧的索引列表中.表视图必须是普通样式(UITableViewStylePlain).例如,对于按字母顺序排列的列表,您可以返回包含字符串"A"到"Z"的数组."

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

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

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

NSString *tappedCharacter = characters[self.savedTappedIndex];  

使用此字符,您可以向服务器询问是否由名称以此字符开头的用户创建的供稿.
然后,数据可以再次显示在tableView第0部分中
.当然,您应该不再显示数据的一侧tableView.

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

最后的说明:

您不应该使用上面的hack来实现真正的实现,但是您可以使用它来测试您的用户界面,并且您可能会看到用户体验不好,因为索引的行为与往常不同.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有