国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

UISearchController使用

2019-11-14 17:53:20
字體:
來源:轉載
供稿:網友

效果圖1

效果圖2

其實一般是在第一種情況使用的UISearchController,但是第二種情況這種又懶得去用uisearchbar+uitableview等等去處理,

其實主要是對數據源的合理使用即可

UISearchController通常是用來排查數據的,比如當前的uitableviewcontroller有許多數據,排查之后需要更新顯示數據。

首先UISearchController是聯通主cntroller與結果controller橋梁

在主controller建立UISearchController對象

@interface UIViewControllerLocation (){    UISearchController* searchController0;}

那么如何聯通主controller

    CGRect rectBar=CGRectMake(0, 0, self.view.frame.size.width, 44);

    [searchController0.searchBar setFrame:rectBar];

  
[self.searchBar addSubview:searchController0.searchBar];

以上代碼需要理解的是searchController0.searchBar是一個只讀屬性,所以不能被assign,

self.searchBar是一個view

/** *  搜索框 */@PRoperty (weak, nonatomic) IBOutlet UIView *searchBar;


不能夠直接使用self.searchBar=searchController0.searchBar;只有tableview.tableHeaderView=searchController0.searchBar才有效果,同樣是view不知道為什么
還有比較重要的一點就是,即使模擬器可以正常的顯示,但是真機卻無法顯示searchBar(xcode7+iphone5s+ios8.3)
最終調試得出真機運行時
searchController0.searchBar的frame是(0 0,0 0)需要重置frame才可以正常顯示

那么如何聯通結果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 */@property(nonatomic,copy)GetResult getResult;/** *  查詢數據列表 */@property (weak, nonatomic) IBOutlet UITableView *tabelview;/** *  tableview的datasource代理 */@property(nonatomic,retain)NSObjectDataSource* dataSource;@end

主controller里初始化結果controller的獲取數據block

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

在主controller里搜索更新時執行就可以了(只傳遞最終數據,數據的篩選需要自行處理)

 

 

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沧源| 孝义市| 建平县| 正镶白旗| 大洼县| 桐乡市| 绥江县| 吴川市| 芦山县| 东莞市| 龙里县| 双流县| 巴彦县| 阿拉善右旗| 老河口市| 泗水县| 镇沅| 无锡市| 清镇市| 砀山县| 巫山县| 华亭县| 龙江县| 大庆市| 鄂州市| 桂平市| 正安县| 大冶市| 淅川县| 洱源县| 宜都市| 屏东市| 咸阳市| 上高县| 昌图县| 凤翔县| 儋州市| 天峨县| 含山县| 台北县| 扶沟县|