首页 文章 精选 留言 我的

精选列表

搜索[索引检测],共10009篇文章
优秀的个人博客,低调大师

iOS 分组索引索引分区

1.新建工程名SearchViewController,File->New->Projectr->SingleView Application->next 2.添加协议和声明变量 还需要让类遵循UISearchBarDelegate协议,除了充当表视图的委托之外还需要让它充当搜索栏的委托。 @interfaceViewController :UIViewController<UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate> { UITableView*tableavaieGroup; UISearchBar*search; NSMutableDictionary*names; NSMutableArray*keys; BOOLisSearching; } 3.添加plist文件,再到ViewDidLoad中初始化视图 - (void)viewDidLoad { //读取plist文件 NSString*path=[[NSBundlemainBundle]pathForResource:@"Property List"ofType:@"plist"]; NSDictionary*dictionary=[[NSDictionaryalloc]initWithContentsOfFile:path]; //self.names=dictionary; self.allNames=dictionary; //读取字典中的键存储在数组中 //NSArray *array=[[namesallKeys]sortedArrayUsingSelector:@selector(compare:)]; //self.myKey=array; [selfresetSearch]; [tableViewGroupreloadData]; [tableViewGroupsetContentOffset:CGPointMake(0.0, 44.0)animated:NO]; [superviewDidLoad];} 4.实现委托方法 从数组中读取字典中的plist文件有几个分区 方法获取一个可重用单元,如果单元不存在则创建一个新的单元。然后从对应查询的数组中获取对象,将单元的文本设置成控制器标题并返回单元 - (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { staticNSString*DisclosureCellIdentifier =@"DisclosureCellIdentifier"; UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:DisclosureCellIdentifier]; if(cell ==nil) {//创建一个新的单元 cell=[[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:DisclosureCellIdentifier]; } //对应查询数组中获取的对象,将单元文本设置成控制器标题并返回单元 NSUIntegerrow=[indexPathrow]; NSString*rowData=[listDataobjectAtIndex:row]; cell.textLabel.text=rowData; cell.accessoryType=UITableViewCellAccessoryDetailDisclosureButton; returncell; } 5.添加搜索栏委托方法 搜索栏有许多在其委托上调用的方法,当用户单击键盘上的返回按钮或搜索键时,将调用searchBarBookmarkButtonClicked,此方法从搜索栏获取搜索短语,并调用我们的搜索方法,这个搜索方法将删除names中不匹配的名称和keys中的空分区: -(void)searchBarBookmarkButtonClicked:(UISearchBar*)searchBar { NSString*searchTerm=[searchBartext]; [selfhandleSearchForTerm:searchTerm]; } 运行结果如下: (点击搜索框进行搜索“egg”,出现第二个页面) 6)NSDictinary遵循NSMutableCopying协议,该协议返回一个NSmutableDictionary,但是这个方法创建的是浅副本。也就是说调用mutableCopy方法时,它将创建一个新的NSmutableDictionary对象,该对象拥有源字典所拥有的所有对象,他们并不是副本,而是相同的实际对象,由于字典中存有数组,如果我们从副本的数组中删除对象,这些对象也会从原字典的数组中删除,因为副本和源都指向相同的对象,在这种情况下元数组是不可改变 的所以无法删除对象,解决这个问题,需要为存有数组的字典创建一个深层可变副本, Next-> 之后 Categroy on (NSDictionary) Categrpy(MutableDeepCopy) 此方法创建一个新的可变字典,然后在原字典中所有的键进行迭代,为它遇到的每个数组创建可变副本。 -(NSMutableDictionary*)mutableDeepCopy { NSMutableDictionary*returnDict=[[NSMutableDictionaryalloc]initWithCapacity:[selfcount]]; NSArray*keys=[selfallKeys]; //NSArray *keys=[self ]; // 因为在原有的mutableCopy中,只会对第一层对象进行mutable化. // 比如NSDictionary嵌套NSArray的话. // 原有的MutableCopy只会返回NSMutableDictionary,而不会使其子元素也变为NSMutableArray. // 而这种方法实际上类似递归的结构. //循环读取复制每一个元素 for(idkeyinkeys) { idoneValue=[selfvalueForKey:key]; idoneCopy=nil; //如果key对应的元素可以响应mutableDeepCopy方法(还是NSDictionary),调用mutableDeepCopy方法复制 if([oneValuerespondsToSelector:@selector(mutableDeepCopy)]) oneCopy=[oneValuemutableDeepCopy]; elseif([oneValuerespondsToSelector:@selector(mutableCopy)]) oneCopy=[oneValuemutableCopy]; if(oneCopy==nil) oneCopy=[oneValuecopy]; [returnDictsetValue:oneCopyforKey:key]; } returnreturnDict; } 7)要想在运行时搜索框后有一个Cancel按钮只需在Option中勾选Shows Cancel Button即可,如下图: 当用户单击Cancel按钮时,程序会将搜索短语设置为空,然后重置搜索,并重新加载数据一显示所有名称,此外,还要让搜索栏放弃第一响应者状态,这样键盘就不再起作用,以便于用户重新处理表视图。 本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/1218230,如需转载请自行联系原作者

优秀的个人博客,低调大师

ceph - 索引

架构与部署 openstack 与 ceph (架构) openstack 与 ceph (monitor初始化) openstack 与 ceph (osd 部署) openstack 与 ceph ( pool 管理 ) openstack 管理二十二 - cinder 连接多个存储 backend openstack 管理二十三 - nova compute 连接 ceph 集群 ceph - crush map 与 pool ceph - 更改 ceph journal 位置 故障与测试 osd 故障测试(模拟常见故障) ceph OSD 故障记录(磁盘故障导致 osd down ) ceph osd 故障后更换硬盘记录 ceph 故障分析 (backfill_toofull) ceph 故障解决备忘 (requests are blocked) ceph ( requests are blocked ) 异常解决方法 ceph 报警 [ low disk space] 解决 ceph - 扩容记录 ceph - crushmap 扩容记录 openstack 管理二十四 - ceph 与 vm 连接测试记录 概念 ceph - pg 常见状态

资源下载

更多资源
Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册