文档章节

关于UISearchDisplayController正解

人生好迈
 人生好迈
发布于 2015/09/22 11:35
字数 502
阅读 850
收藏 0

最近经常用到搜索类的布局,大体是这样的

上面是一个navigationController,接下来一个searchBar,下面是tableView

searchBar这个控件就用来搜索tableView上的数据

[[UISearchDisplayController allocinitWithSearchBar:searchBar contentsController:self];

UISearchDisplayController这个控件很强大,它初始化是基于searchBar的,里面有些效果很不错,apple都封装好了,并且可以很好的支持实时搜索,即我们只需要将搜索出来的数据重新赋给array(这个array用来存储tableView数据),不需要reloadData,就会自动出来

其实reloadData也没用,为什么呢?因为搜索出来的结果显示在tableView上,该tableView并不是当前布局的那个tableView,而是另外一个,我猜测应该是UISearchDisplayController里面自带的,所以不要混淆了

特别是在tableView代理方法里,有时候需要判断代理方法传入的tableView是否为当前布局的tableView,因为也有可能是UISearchDisplayController里自带的,它们同样会触发代理方法

当点击searchBar时,它会自动上移并且遮住navigationController

经过测试,如果上面是navigationBar,则searchBar不会移动,但如果是UINavigationController自带过来的,则会上移覆盖

往往有的时候都是UINavigationController自带过来的,如果使用UISearchDisplayController,searchBar就会自动覆盖,这个情况我试了很多次,包括新创建了一个navigationBar盖在上面,但效果依然不好,对于这种情况,基于我目前的技术,只能舍弃UISearchDisplayController,单纯的用UISearchBar了,虽然效果差了一些,但需要实现的功能照样可以,比如实时搜索,除了重新赋值给array外,额外的操作就是需要reloadData了。

有时候点击searchBar时,右侧可能没有出现‘cancel/取消’按钮,这时需要调用下面的方法

- (void)setShowsCancelButton:(BOOL)showsCancelButton animated:(BOOL)animated

相信看方法名字就知道是做什么的了


本文转载自:

人生好迈
粉丝 7
博文 9
码字总数 582
作品 0
朝阳
程序员
私信 提问
UISearchDisplayController “No Results“和 cancel按...

通过 查看UISearchDispalyController的delegate方法以及它本身属性 了解到他的一些方法,而通过测试,No Results字符的更改放到 - (void)searchDisplayController:(UISearchDisplayControll...

hikoming
2013/07/19
336
0
UISearchDisplayController 的使用

原文地址: http://ygamretuta.me/2011/08/10/ios-implementing-a-basic-search-uisearchdisplaycontroller-and-interface-builder/ 今天,我会演示如何在iOS中实现本地搜索。代码是在苹果官...

鉴客
2012/01/09
26.6K
0
代码创建UISearchDisplayCountroller

在Interface Builder里面有一个控件叫Search Bar and Search Display controller 可以实现如地图搜索框,联系人中的搜索框之类的动态效果,很漂亮 搜索框下面会出现搜索历史,segment切换 但是只...

Aimy
2013/11/12
1K
1
修改Search Bar上的Cancel按钮

有时候Search Bar上的Cancel按钮真的很讨厌,你可以在IB中去掉它,从属性面板中去掉showscancel button前的小勾就可以了。 但是,当你点击搜索栏的text field时,这个Cancel按钮又出来了: ...

鉴客
2012/01/09
2.9K
1
软考上午选择题我做错的题目

内存单元按字节编址,地址0000A000H~0000BFFFH共有(2)个存储单元。 错选:1024k 正解:8K 若CPU要执行的指令为:MOV R1,#45(即将数值45传送到寄存器R1中),则该指令中采用的寻址方式为(...

寂岚峰
2017/10/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
23分钟前
14
0
读书笔记:深入理解ES6 (八)

第八章 迭代器(Iterator)与生成器(Generator) 第1节 循环语句的问题   在循环、多重循环中,通过变量来跟踪数组索引的行为容易导致程序出错。迭代器的出现旨在消除这种复杂性,并减少循...

张森ZS
24分钟前
12
0
Elasticsearch 实战(一) - 简介

官腔 Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 基本等于没说,咱们慢慢看 1 概述 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜...

JavaEdge
28分钟前
13
0
【jQuery基础学习】11 jQuery性能简单优化

本文转载于:专业的前端网站➦【jQuery基础学习】11 jQuery性能简单优化 关于性能优化 合适的选择器 $("#id")会直接调用底层方法,所以这是最快的。如果这样不能直接找到,也可以用find方法继...

前端老手
37分钟前
12
0
重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源

导读:2019 年 10 月 17 日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应用模型 Open Application Model (OAM...

阿里云官方博客
39分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部