• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

swift开发之--UISearchBar的使用/UISearchController的使用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

记录下UISearchBar的基本用法,补充:ios 8.0以后,原来的UISearchDisplayController被官方废弃,建议使用UISearchController,下面就简单的记录下这两种控件的使用。

1,UISearchBar,代码如下:

a,声明

class NinethViewController: UIViewController,UISearchBarDelegate,UITableViewDelegate,UITableViewDataSource

b,准备,创建所需要的变量

 var searchBar:UISearchBar!
    var hTabV:UITableView!
    
    var ctrls:[String] = ["a","b","c","d","e"]
    var ctrlsel:[String] = []

c,具体方法和代理方法的实现

func creatUI(){
        self.ctrlsel = self.ctrls
        
        self.searchBar = UISearchBar(frame:CGRect(x:0,y:64,width:kScreenWidth,height:50))
        self.searchBar.delegate = self
//        self.searchBar.setShowsCancelButton(true, animated: true)
//        self.searchBar.showsSearchResultsButton = true
        self.searchBar.placeholder = "请输入你想搜索的内容"
//        self.searchBar.showsCancelButton = false
        self.view.addSubview(self.searchBar)
        
        self.hTabV = UITableView(frame:CGRect(x:0,y:50+64,width:kScreenWidth,height:kScreenHeight-50))
        self.hTabV.delegate = self
        self.hTabV.dataSource = self
        self.hTabV.tableFooterView = UIView()
        self.hTabV.register(UITableViewCell().classForCoder, forCellReuseIdentifier: "cell")
        self.view.addSubview(self.hTabV)
    }

补充,Options属性,可设置如下功能样式:

showsSearchResultsButton  搜索框右边显示一个圆形向下的按钮,单机会发送特殊事件
showsBookmarkButton  搜索框右边会显示一个书本的按钮,单机会发送特殊事件
showsCancelButton  搜索框右边会出现一个“cancel”按钮,单击会发送特殊事件
isSearchResultsButtonSelected  搜索结果按钮被选中
showsSearchResultsButton 搜索结果显示按钮
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        print(searchText)
//        没有搜索内容时显示全部组件
        if searchText == "" {
            self.ctrlsel = self.ctrls
        }else{
            self.ctrlsel = []
            for ctrl in self.ctrls {
                if ctrl.uppercased().hasPrefix(searchText.uppercased()) {
                    self.ctrlsel.append(ctrl)
                }
            }
        }
        self.searchBar.endEditing(true)
        self.hTabV.reloadData()
    }

c,tableview具体代理方法的实现:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.ctrlsel.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let identiferStr:String = "cell"
        let cell = tableView.dequeueReusableCell(withIdentifier: identiferStr, for: indexPath)
        cell.textLabel?.text = "\(self.ctrlsel[indexPath.row])"
        cell.accessoryType = .disclosureIndicator
        
        return cell
    }

效果如下:

2,UISearchController的使用

func creatUIs(){
        
        self.searchBar = UISearchBar(frame:CGRect(x:0,y:0,width:kScreenWidth,height:50))
        self.searchBar.showsCancelButton = true
        //通过参数searchResultsController传nil来初始化UISearchController,意思是我们告诉search controller我们会用相同的视图控制器来展示我们的搜索结果,如果我们想要指定一个不同的view controller,那就会被替代为显示搜索结果。
        searchController = UISearchController(searchResultsController:nil)
        //设置代理,searchResultUpdater是UISearchController的一个属性,它的值必须实现UISearchResultsUpdating协议,这个协议让我们的类在UISearchBar文字改变时被通知到,我们之后会实现这个协议。
        searchController.searchResultsUpdater = self as? UISearchResultsUpdating
        //默认情况下,UISearchController暗化前一个view,这在我们使用另一个view controller来显示结果时非常有用,但当前情况我们并不想暗化当前view,即设置开始搜索时背景是否显示
        searchController.dimsBackgroundDuringPresentation = false
        //设置默认显示内容
        searchController.searchBar.placeholder = "Search here..."
        //设置searchBar自适应大小
        searchController.searchBar.sizeToFit()
        //设置默认显示内容
        searchController.searchBar.delegate = self
        //设置definesPresentationContext为true,我们保证在UISearchController在**状态下用户push到下一个view controller之后search bar不会仍留在界面上。
        searchController.definesPresentationContext = true
        
        self.hTabV = UITableView(frame:CGRect(x:0,y:0,width:kScreenWidth,height:kScreenHeight))
        self.hTabV.delegate = self
        self.hTabV.dataSource = self
        self.hTabV.tableFooterView = UIView()
        self.hTabV.register(UITableViewCell().classForCoder, forCellReuseIdentifier: "cell")
        //设置tableview的头视图为searchController.searchBar
        self.hTabV.tableHeaderView = searchController.searchBar
        self.view.addSubview(self.hTabV)
        
    }

其他的searchbar的代理方法和tableview的代理方法,和上面的一样!

效果如下图:

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
太阳升起并下落的小动画-SWIFT发布时间:2022-07-13
下一篇:
2.Swift元组|可选值|断言发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap