iOS 9 Spotlight简单使用
2015-09-30 17:52
344 查看
iOS9 支持应用内搜索,比如
点击进入可以直接进入详情界面。做到这点需要两步:一、建立索引 2、点击索引进入程序进行相应处理。
使用soptlight需要先导入静态库
然后在需要建立索引的地方加入下面代码
#import
<CoreSpotlight/CoreSpotlight.h>
下面是通过点击索引,应用被打开时调用的方法
此外删除索引的代码
点击进入可以直接进入详情界面。做到这点需要两步:一、建立索引 2、点击索引进入程序进行相应处理。
使用soptlight需要先导入静态库
然后在需要建立索引的地方加入下面代码
#import
<CoreSpotlight/CoreSpotlight.h>
NSMutableArray *seachableItems = [NSMutableArray new]; //titles为索引的标题数组,可以分别定义详细内容和图片,图片为空时,默认logo图片 [titles enumerateObjectsUsingBlock:^(NSString *__nonnull obj, NSUInteger idx, BOOL * __nonnull stop) { CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:@"views"]; attributeSet.title = obj; attributeSet.contentDescription = [NSString stringWithFormat:NSLocalizedString(@"快速打开 %@", nil),obj]; UIImage *thumbImage = [UIImage imageNamed:[NSString stringWithFormat:@"icon_%@.png",obj]]; attributeSet.thumbnailData = UIImagePNGRepresentation(thumbImage);//beta 1 there is a bug CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:obj domainIdentifier:@"你的identifer" attributeSet:attributeSet]; [seachableItems addObject:item]; }]; [[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:seachableItems completionHandler:^(NSError * __nullable error) { if (!error) NSLog(@"%@",error.localizedDescription); }];
下面是通过点击索引,应用被打开时调用的方法
- (BOOL)application:(nonnull UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * __nullable))restorationHandler{ NSString *idetifier = userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"];//这个是标题,通过标题可以知道点击了什么 NSArray *arr = [[NSUserDefaults standardUserDefaults]objectForKey:@"homeDataArr"]; for (NSDictionary *dict in arr){//遍历数组找到点击的标示进行处理,这个例子中根视图是tabbar,具体代码视情况而定 NSString *subject = dict[@"subject"]; if ([subject isEqualToString:idetifier]){ UITabBarController *tabbar = (UITabBarController *)self.window.rootViewController; MPBaseNavViewController *nav = [[tabbar viewControllers] objectAtIndex:1]; UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; MPHomeDetailViewController *editc = (MPHomeDetailViewController*)[story instantiateViewControllerWithIdentifier:@"MPHomeDetailVC"]; [nav pushViewController:editc animated:YES]; break; } } return YES; }
此外删除索引的代码
[[CSSearchableIndex defaultSearchableIndex]deleteSearchableItemsWithIdentifiers:@[idetifier] completionHandler:^(NSError * _Nullable error) { }];
相关文章推荐
- spotlight on mysql
- 在Mac OS X上利用Spotlight搜索代码
- 苹果公司正式发布iOS9 beta3
- UM适配iOS9
- IOS 9 关于微信,QQ三方登陆的https适配结局方案,XCODE配置
- App Transport Security (ATS)
- AddressBookUI Framework in iOS9 beta4
- iOS项目更新之升级Xcode7 & iOS9
- iOS 适配系列教程
- iOS 9部分问题
- Xcode 7 和iOS9网络访问失败的问题
- AFNetWorking 在 IOS9 请求数据失败解决方案
- error itms-90535,error itms-90163
- IOS隐式动画
- ios9 SFSafariViewController完整web体验
- 【人在运维囧途_12】Spotlight on Unix 让运维平添几缕幽香
- iOS9 适配
- flashlight--spotlight的好帮手
- 升级Xcode7后所要更改的配置
- App Transport Security has blocked a cleartext HTTP (http://) resource ...