iOS UISearchController 搜索框

#import <Foundation/Foundation.h>

@interface Student : NSObject

@property(strong,nonatomic) NSString *name;

@property(strong,nonatomic) NSString *pic;

@property(strong,nonatomic) NSString *tel;

-(Student *)initWithDic:(NSDictionary *)dic;

+(Student *)studentWithDic:(NSDictionary *)dic;

@end

#import "Student.h"

@implementation Student

-(Student *)initWithDic:(NSDictionary *)dic

{

self= [super init];

if (self)

{

self.name=dic[@"name"];

self.pic=dic[@"pic"];

self.tel=dic[@"tel"];

}

return self;

}

+(Student *)studentWithDic:(NSDictionary *)dic

{

return [[self alloc] initWithDic:dic];

}

-(NSString *)description

{

return [NSString stringWithFormat:@"name=%@,pic=%@,tel=%@",_name,_pic,_tel];

}

@end

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate,UISearchResultsUpdating>

@property(strong,nonatomic) NSMutableArray *arrData;

@property(strong,nonatomic) UITableView *tableV;

@property(strong,nonatomic) UISearchController *searchController;

@property(strong,nonatomic) NSArray *arrTemp;

@end

#import "ViewController.h"

#import "Student.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

self.arrData=[NSMutableArray array];

for (NSArray *arr in [[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"GYiOSclass(2)" ofType:@"plist"]] allValues])

{

for (NSDictionary *dic in arr)

{

[self.arrData addObject:[Student studentWithDic:dic]];

}

}

self.tableV=[[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];

self.tableV.delegate=self;

self.tableV.dataSource=self;

[self.view addSubview:self.tableV];

self.searchController=[[UISearchController alloc] initWithSearchResultsController:nil];

//指定代理

self.searchController.searchResultsUpdater=self;

//搜索框的背景色

self.searchController.searchBar.backgroundColor=[UIColor lightGrayColor];

//将

self.tableV.tableHeaderView=self.searchController.searchBar;

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

if (self.searchController.active)

{

return self.arrTemp.count;

}

else

{

return self.arrData.count;

}

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"MyCell"];

if (cell==nil)

{

cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyCell"];

}

if (self.searchController.active)

{

cell.textLabel.text=[self.arrTemp[indexPath.row] name];

cell.detailTextLabel.text = nil;

cell.imageView.image=nil;

}

else

{

cell.textLabel.text=[self.arrData[indexPath.row] name];

cell.imageView.image=[UIImage imageNamed:[self.arrData[indexPath.row] pic]];

cell.detailTextLabel.text=[self.arrData[indexPath.row] tel];

}

return cell;

}

//实现UISearchResultsUpdating 代理

-(void)updateSearchResultsForSearchController:(UISearchController *)searchController

{

//谓词

NSPredicate *pre=[NSPredicate predicateWithFormat:@"name=%@",self.searchController.searchBar.text];

NSLog(@"%@",pre);

self.arrTemp=[self.arrData filteredArrayUsingPredicate:pre];

dispatch_async(dispatch_get_main_queue(),^

{

[self.tableV reloadData];

});

NSLog(@"%@",self.arrTemp);

}

//

-(void)viewDidDisappear:(BOOL)animated

{

[super viewDidDisappear:animated];

if (self.searchController.active)

{

self.searchController.active=NO;

[self.searchController.searchBar removeFromSuperview];

}

}

@end

时间: 2024-10-03 14:24:03

iOS UISearchController 搜索框的相关文章

ios UISearchBar搜索框的基本使用

摘要: 小巧简洁的原生搜索框,漂亮而易用,如果我们的应用没有特殊需求,都可以使用它. iOS中UISearchBar(搜索框)使用总结 初始化:UISearchBar继承于UIView,我们可以像创建View那样创建searchBar     UISearchBar * bar = [[UISearchBar alloc]initWithFrame:CGRectMake(20, 100, 250, 40)];     [self.view addSubview:bar]; @property(n

自定义EditText实现类iOS风格搜索框

最近在项目中有使用到搜索框的地方,由于其样式要求与iOS的UISearchBar的风格一致.默认情况下,搜索图标和文字是居中的,在获取焦点的时候,图标和文字左移.但是在Android是并没有这样的控件(可能见识少,并不知道有).通常情况下我们使用组合控件,使用ReleativeLayout或者FrameLayout来实现.此篇并不是使用上述方法实现,其核心是继承系统EditText,重写onDraw方法,来改变默认的左上右下的drawable,实现平移到中间位置.这里暂时只实现了drawable

IOS中搜索框UISearchBar及搜索方法的使用

搜索框可以用UISearchBar,并且可以设置代理UISearchBarDelegate. 1 -(void)addSearchBar{ 2 CGRect searchBarRect = CGRectMake(0, 0, self.view.frame.size.width, 44); 3 UISearchBar *searchBar = [[UISearchBar alloc]initWithFrame:searchBarRect]; 4 searchBar.placeholder = @"

IOS自定义搜索框

如果只是在某个地方添加一个自定义的搜索框,只需要添加以下代码: //创建搜索框对象 UITextField *searchBar=[[UITextField alloc] init]; searchBar.width=300; searchBar.height=30; searchBar.font=[UIFont systemFontofSize:15]; [email protected]"请输入搜索框"; searchBar.backgroud=[UIImage imageName

iOS --- 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar + UISearchDisplayController的组合)

在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISearchDisplayController的组合方式. 添加UISearchController属性: @property(strong, nonatomic) UISearchController *searchController; @property(strong, nonatomic) NS

iOS - Swift UISearchController仿微信搜索框

0x01.创建一个UISearchController 如果传入的searchController为nil,则表示搜索的结果在当前控制器中显示,现在我让它在searchVC中显示. // 创建searchResultVC let searchVC = UIViewController() // 设置背景颜色为红色 searchVC.view.backgroundColor = UIColor.red let searchController = UISearchController(search

iOS开发——UI篇OC篇&amp;TextField作为搜索框的使用

TextField作为搜索框的使用 在iOS开发中我们经常会使用到搜索框,但是有的时候系统自带的搜索框不足以满足我吗想要的功能,这个时候我们就可以使用自定义的搜索框实现想要的功能. 今天就简单的介绍一下怎么去使用UITextField实现一个搜索框,当然如果你有更好的方法也可以分享出来,大家相互学习. 一:直接使用 1 UITextField *text = [[UITextField alloc] init]; 2 text.frame = CGRectMake(0, 0, 320, 30);

iOS开发项目篇—12搜索框的封装

iOS开发项目篇—12搜索框的封装 一.在“发现”导航栏中添加搜索框 1.实现代码 1 #import "YYDiscoverViewController.h" 2 3 @interface YYDiscoverViewController () 4 5 @end 6 7 @implementation YYDiscoverViewController 8 9 - (void)viewDidLoad 10 { 11 [super viewDidLoad]; 12 13 //添加搜索框

iOS中UISearchBar(搜索框)使用总结

iOS中UISearchBar(搜索框)使用总结 初始化:UISearchBar继承于UIView,我们可以像创建View那样创建searchBar     UISearchBar * bar = [[UISearchBar alloc]initWithFrame:CGRectMake(20, 100, 250, 40)];     [self.view addSubview:bar]; @property(nonatomic)        UIBarStyle              ba