你的位置:首页 > 操作系统

[操作系统]UISearchController使用

效果图1

效果图2

其实一般是在第一种情况使用的UISearchController,但是第二种情况这种又懒得去用uisearchbar+uitableview等等去处理,

其实主要是对数据源的合理使用即可

UISearchController通常是用来排查数据的,比如当前的uitableviewcontroller有许多数据,排查之后需要更新显示数据。

首先UISearchController是联通主cntroller与结果controller桥梁

在主controller建立UISearchController对象

@interface UIViewControllerLocation (){  UISearchController* searchController0;}

那么如何联通主controller

 [self.searchBar addSubview:searchController0.searchBar];

以上代码需要理解的是searchController0.searchBar是一个只读属性,所以不能被assign,

self.searchBar是一个view

/** * 搜索框 [email protected] (weak, nonatomic) IBOutlet UIView *searchBar;

 不能够直接使用self.searchBar=searchController0.searchBar;只有tableview.tableHeaderView=searchController0.searchBar才有效果,同样是view不知道为什么

那么如何联通结果controller

@interface UIViewControllerLocation (){  SearchResult* searchResult;}

 

  searchResult=[SearchResult new];  searchController0=[[UISearchController alloc] initWithSearchResultsController:searchResult];

SearchResult是一个uitableviewcontroller
然后是主controller作为了结果controller的数据更新者
  searchController0.searchResultsUpdater=self;

需要遵循一个代理

@interface UIViewControllerLocation : UIViewController<UISearchResultsUpdating>

然后

   //设置活跃性为YES否则需要自行推送结果controller  searchController0.active=YES;

那么主controller如何推送数据到 结果 controller

代理

/** * 当搜索框开始改变时触发 * * @param searchController */-(void)updateSearchResultsForSearchController:(nonnull UISearchController *)searchController{  searchResult.getResult(@[@70,@71,@72,@73,@74,@75]);}

结果controller需要处理接受到的数据(使用的block)

#import <UIKit/UIKit.h>#import "NSObjectDataSource.h"/** * 获取数据 * * @param idData */typedef void (^GetResult)(id idData);@interface SearchResult : UIViewController/** * 获取数据的block [email protected](nonatomic,copy)GetResult getResult;/** * 查询数据列表 [email protected] (weak, nonatomic) IBOutlet UITableView *tabelview;/** * tableview的datasource代理 [email protected](nonatomic,retain)NSObjectDataSource* dataSource;@end

主controller里初始化结果controller的获取数据block

  SearchResult*__weak weakSearchResult=searchResult;  searchResult.getResult=^(NSArray* array)  {    weakSearchResult.dataSource.nsArrayModels=array;    [weakSearchResult.tabelview reloadData];  };

在主controller里搜索更新时执行就可以了(只传递最终数据,数据的筛选需要自行处理)

 

 

 

 


江门旅游攻略自由行江门旅游景点排行榜江门旅游哪里好玩呢江门免费旅游景点大全江门市周边旅游景点春节高速免费了,哪些路段可能会拥堵啊? 2015年春节高速免费时间从几号开始? 火车上铺好还是下铺好? 春节自驾游去哪泡温泉好? 为啥要去天津 揭秘必去天津的四大理由 四月里来摘桑葚 省内最有特色的六大桑园 程阳八寨:一个朴实素颜的侗族大寨 探访武汉代表性的寺庙 归元寺 厦门闽泰园农庄有什么好玩的? 2015年元旦去海南旅游有什么好玩的? 海南旅游必备物品有什么? 厦门同安郡马府有什么好玩的? 清远飞霞山风景区开车路线?飞霞山开车需要多长时间? 清远飞霞山乘车方便吗?飞霞山坐车要多久? 深圳东部华侨城图片?东部华侨城大峡谷有哪些特色? 澳门环岛游坐几路车?珠海澳门环岛游有直达车吗? IDTCV126PVG8 Datasheet IDTCV126PVG8 Datasheet IDT70T653MS12BCI Datasheet IDT70T653MS12BCI Datasheet IDTCV128PAG Datasheet IDTCV128PAG Datasheet 东莞到清远聚龙湾天然温泉度假村旅游 东莞到清远聚龙湾天然温泉度假村旅游 东莞到清远聚龙湾天然温泉度假村旅游 东莞到清远老虎谷漂流旅游 东莞到清远老虎谷漂流旅游 东莞到清远老虎谷漂流旅游 东莞到清远连南瑶族旅游 东莞到清远连南瑶族旅游 东莞到清远连南瑶族旅游