UISearchBar用法

1、直接看代码吧

//
//  ViewController.m

#import "ViewController.h"

@interface ViewController () <UISearchBarDelegate, UITableViewDataSource, UITableViewDelegate>
{
    UITableView * _tableView;
    NSMutableArray * _dataArray;
    NSMutableArray * _subDataArray;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.view.backgroundColor = [UIColor whiteColor];

    [self configTableView];

    UISearchBar * searchBar = [[UISearchBar alloc] init];
    searchBar.frame = CGRectMake(0, 0, _tableView.frame.size.width, 0);
    searchBar.delegate = self;
    [searchBar sizeToFit]; //自动调整大小
    _tableView.tableHeaderView = searchBar;

}

- (void) configTableView {
    CGFloat width = [[UIScreen mainScreen] bounds].size.width;
    CGFloat height = [[UIScreen mainScreen] bounds].size.height;
    CGRect tableViewFrame = CGRectMake(0, 0, width, height);
    _tableView = [[UITableView alloc] initWithFrame:tableViewFrame style:UITableViewStylePlain];
    [self.view addSubview:_tableView];
    _tableView.delegate = self;
    _tableView.dataSource = self;

    //备份数据源
    _dataArray = [[NSMutableArray alloc] init];
    for (int i = 0; i < 100; i++) {
        [_dataArray addObject:[NSString stringWithFormat:@"%i", i]];
    }
    //数据源
    _subDataArray = [[NSMutableArray alloc] initWithArray:_dataArray];
}

#pragma mark UISearchBarDelegate
//点击键盘上得search按钮 开始调用此方法
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    //清空数据源
    [_subDataArray removeAllObjects];
    NSString * getStr = searchBar.text;
    //从备份数据源查找符合条件的数据,并加入到数据源中
    for (NSString * str in _dataArray) {
        if ([str containsString:getStr]) {
            [_subDataArray addObject:str];
        }
    }
    //更新UI
    [_tableView reloadData];
    //让键盘失去第一响应者
    [searchBar resignFirstResponder];
}

#pragma mark UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return _subDataArray.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString * cellid = @"cellid";
    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellid];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellid];
    }
    cell.textLabel.text = _subDataArray[indexPath.row];
    return cell;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

图:

2、实时显示搜索结果:

给searchBar添加如下属性:

    searchBar.keyboardType = UIKeyboardTypeNumberPad;
    searchBar.showsCancelButton = YES;

另外添加两个方法:

#pragma mark UISearchBarDelegate
//此方法实时监测搜索框中文本变化
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    NSString * getStr = searchBar.text;
    [_subDataArray removeAllObjects];

    if (getStr.length == 0) {
        [_subDataArray addObjectsFromArray:_dataArray];
        [_tableView reloadData];
    }else {
        //从备份数据源查找符合条件的数据,并加入到数据源中
        for (NSString * str in _dataArray) {
            if ([str containsString:getStr]) {
                [_subDataArray addObject:str];
            }
        }
        //更新UI
        [_tableView reloadData];
    }
}
//点击搜索框行的cancel按钮调用此方法
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
    searchBar.text = @"";
    [searchBar resignFirstResponder];
    [_subDataArray removeAllObjects];
    [_subDataArray addObjectsFromArray:_dataArray];
    [_tableView reloadData];
}

图片:

3、搜索框提示信息

    searchBar.prompt = @"请输入";

    searchBar.placeholder = @"这是提示信息";

4、外观样式:

默认样式:

    searchBar.barStyle = UIBarStyleDefault;
    searchBar.barStyle = UIBarStyleBlack;

    searchBar.barStyle = UIBarStyleBlack;
    searchBar.translucent = YES;

黑色半透明:

指定颜色:

    searchBar.tintColor = [UIColor orangeColor];

然后不显示,设置不成功,点进去看一下源码:

/*
 The behavior of tintColor for bars has changed on iOS 7.0. It no longer affects the bar's background
 and behaves as described for the tintColor property added to UIView.
 To tint the bar's background, please use -barTintColor.
 */
@property(null_resettable, nonatomic,strong) UIColor *tintColor;

说明:ios7以后就不用了,要用barTintColor

    searchBar.barTintColor = [UIColor orangeColor];

5、书签按钮:

    //显示书签按钮
    searchBar.showsBookmarkButton = YES;

#pragma mark UISearchBarDelegate
//相应书签按钮事件
- (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar {

}

时间: 2024-12-30 04:11:10

UISearchBar用法的相关文章

ios开发入门篇(四):UIWebView结合UISearchBar的简单用法

 UIWebView是ios开发中比较常用的一个控件.我们可以用它来浏览网页.打开文档等,今天笔者在这里简单介绍下UIWebView和UISearchBar结合起来的用法,做一个简单的类浏览器. 一:首先定义这两个控件,并在.h文件中实现UISearchBarDelegate,UIWebViewDelegate两个代理 @interface TestView : UIViewController<UISearchBarDelegate,UIWebViewDelegate> @property(

Swift - 搜索条(UISearchBar)的用法

1,搜索条Options属性还可设置如下功能样式: Shows Search Results Button:勾选后,搜索框右边显示一个圆形向下的按钮,单击会发送特殊事件. Shows Bookmarks Button:勾选后,搜索框右边会显示一个书本的按钮,单击会发送特殊事件. Shows Cancel Button:勾选后,搜索框右边会出现一个“Cancel”按钮,单击会发送特殊事件. Shows Scope Bar:勾选后,会在搜索条下面出现一个分段控制器. 2,下面是一个搜索条的使用样例,

Swift - 带结果列表的搜索条(UISearchDisplayController)的用法

(注:自iOS8起,苹果便废弃UISearchDisplayController的使用,改为使用UISearchController来实现类似功能,可参考我的另一篇文章“Swift - 使用UISearchController实现带搜索栏的表格”) UISearchDisplayController控件默认封装了Search Bar和Table View,可同时提供搜索和结果表格显示功能. 下面提供了一个使用样例,同时通过代码定制Search Bar的一些属性来实现自定义的外观和效果,并且展示用

js中获取时间new date()的用法

js中获取时间new date()的用法 获取时间:   var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFullYear(); //获取完整的年份(4位,1970-????) 3 myDate.getMonth(); //获取当前月份(0-11,0代表1月) 4 myDate.getDate(); //获取当前日(1-31) 5 myDate.getDay();

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

shell 中seq的用法 echo -n用法

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 从1循环到100的两种方法(bash 其它的shell没试过)for x in `seq 1 100`;do echo $x;donefor x in {1..100};do echo $x;done echo -n 不换行输出 $echo -n "123" $echo "456" 最终输出 123456 echo -e 处理特殊字符 若字符串中

sudo的用法

su -l user -C 'COMMAND' 是用user这个用户执行命令 我们一般使用sudo 这个命令 sudo [-u] user COMMAND sudo [-k] COMMAND 清除此前用户的密码. sudo的配置文件/etc/sudoers 配置项为 users    hosts=(runas)    commands users:可以是一个用户的名称也可以是一个组,也可以是一个别名 username #UID user_alias 用户别名的用法 User_Alias NETA

几招学会 Python 3 中 PyMongo 的用法

本文和大家分享的是Python3下MongoDB的存储操作相关内容,在看本文之前请确保你已经安装好了MongoDB并启动了其服务,另外安装好了Python的PyMongo库.下面进入正题,一起来看看吧,希望对大家学习Python3有所帮助. 连接MongoDB 连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入MongoDB的IP及端口即可,第一个参数为地址host,第二个参数为端口port,端口如果不传默认是27017. import pymongo cl