iOS-UISearchBar和UISearchController(参考网友来练习一下)

#import "ViewController.h"
#import "TestCell.h"
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate,UISearchBarDelegate,UISearchResultsUpdating>
{
    NSMutableArray *dataArray;
    NSMutableArray *searchArray;
    UISearchController *mySearchController;

}
@property (weak, nonatomic) IBOutlet UITableView *myTableView;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    mySearchController=[[UISearchController alloc]initWithSearchResultsController:nil];
    mySearchController.searchResultsUpdater=self;
    mySearchController.dimsBackgroundDuringPresentation=NO;
    mySearchController.hidesNavigationBarDuringPresentation=NO;
    mySearchController.searchBar.frame=CGRectMake(mySearchController.searchBar.frame.origin.x, mySearchController.searchBar.frame.origin.y, mySearchController.searchBar.frame.size.width, 44.0 );
    self.myTableView.tableHeaderView=mySearchController.searchBar;

    dataArray=[NSMutableArray array];
    for(NSInteger i=0;i<100;i++)
    {
        [dataArray addObject:[NSString stringWithFormat:@"%ld-test",(long)i]];
    }

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (mySearchController.active)
    {
        return searchArray.count;
    }
    else
    {
        return dataArray.count;
    }

}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 44;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    TestCell *testCell=[tableView dequeueReusableCellWithIdentifier:@"TestCell" forIndexPath:indexPath];
    if (mySearchController.active) {
        testCell.testLabel.text=searchArray[indexPath.row];
    }
    else
    {
        testCell.testLabel.text=dataArray[indexPath.row];
    }

    return testCell;
}
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController
{
    NSString *searchString=mySearchController.searchBar.text;
    NSPredicate *predicate=[NSPredicate predicateWithFormat:@"self contains[c]%@",searchString];
    if (searchArray.count)
    {
        [searchArray removeAllObjects];
    }
    searchArray=[NSMutableArray arrayWithArray:[dataArray filteredArrayUsingPredicate:predicate]];
    [_myTableView reloadData];

}
@end
时间: 2024-10-10 07:58:07

iOS-UISearchBar和UISearchController(参考网友来练习一下)的相关文章

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

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

iOS开发-搜索栏UISearchBar和UISearchController

搜索栏的重要性我们就不说了,狼厂就是靠搜索起家的,现在越来越像一匹没有节操的狼,UC浏览器搜索栏现在默认自家的神马搜索,现在不管是社交,O2O还是在线教育等都会有一个搜索栏的实现,不过彼此实现效果是不一样的.iOS中的搜索栏实现起来相对简单一点,网上也有很多参考资料,不过靠谱的不是很多,很多都是iOS 8.0之前的实现,iOS 8.0上的实现貌似很少看到,看了一些老外的代码,使用了一下UISearchController感觉还是非常不错的. UISearchBar和UIDisplayContro

搜索栏UISearchBar和UISearchController(UISearchDisplayController在iOS8.0之后就不推荐使用)

iOS中UISearchDisplayController用于搜索,搜索栏的重要性我们就不说了,狼厂就是靠搜索起家的,现在越来越像一匹没有节操的狼,UC浏览器搜 索栏现在默认自家的神马搜索,现在不管是社交,O2O还是在线教育等都会有一个搜索栏的实现,不过彼此实现效果是不一样的.iOS中的搜索栏实现起来相对 简单一点,网上也有很多参考资料,不过靠谱的不是很多,很多都是iOS 8.0之前的实现,iOS 8.0上的实现貌似很少看到,可以运行,不过会看到searchDisplayController'

ios UISearchBar搜索框的基本使用

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

IOS UI学习 UISearchController

使用UISearchController 配合UITableView实现搜索功能 1 #import "ViewController12.h" 2 3 @interface ViewController12 () <UITableViewDataSource , UITableViewDelegate , UISearchResultsUpdating> 4 5 @end 6 7 @implementation ViewController12 8 { 9 UISearch

iOS UISearchBar学习笔记

UISearchBar 是一个搜索控件,它提供了一个文本输入框,一个查找按钮,一个书签按钮,一个取消按钮.我们需要使用UISearchBarDelegate代理来进行查找工作: 拖一个UISearchBar控件 右边栏的属性 text 是设置默认的文本,placeholder占位符也就是文本没编辑时显示的文字,prompt是在文本框上面显示的文字 上面是填写文本对应的样子 继续属性 这两个属性用来设置样式: 用来设置按钮; 四个按钮分别对应的样式: 我们还能来设置背景图片: 分别是 上面是用来

ios UISearchBar 自动获取焦点

@property (weak, nonatomic) IBOutlet UISearchBar *searchBar; - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self performSelector:@selector(setCorrectFocus) withObject:NULL afterDelay:0.8]; } -(void) setCorrectFocus { [self.

iOS UISearchBar

当你在seachBar中输入字母之前的时候,只是用鼠标选中searchBar的时候,如图 终端输出截图如下:(这个时候调用先shouldBeginEditing,之后调用didBeginEditing,) 当你希望选中UISearchBar的时候,键盘自动调用加载到界面,你需要将下面函数的返回值设置为YES: - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar { NSLog(@"shouldBeginEditing"

iOS UISearchBar 设置光标颜色和取消按钮颜色

这个问题其实可以取个巧路,大家都知道设置SearchBar的tintcolor的方法 searchBar.tintColor = [UIColor blueColor]; [[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITe