debug_cat 发表于 2021-4-14 09:59

ios[ios]UISearchBar学习(连载15)



## UISearchBar

领券商城开发搜索功能,需要用到`UISearchBar`

一个搜索组件。接下里就是简单的使用案例了。

#### 设置搜索bar位置

我们使用`SnapKit`来控制view的位置。

```swift
//初始化
private lazy var searchBox: UISearchBar = {
      let searchView = UISearchBar()
      return searchView
}()
```

布局位置:安全区的top的位置

```swift
//搜索
view.addSubview(searchBox)
searchBox.delegate = self
//约束搜索
searchBox.snp.makeConstraints { (mm) in
    mm.left.equalToSuperview()
    mm.right.equalToSuperview()
    mm.top.equalTo(view.safeAreaLayoutGuide.snp.top)
    mm.height.equalTo(60)
}
```

#### 设置搜索代{过}{滤}理

实现`UISearchBarDelegate`

```swift
searchBox.delegate = self
```

```swift
extension FindViewController{
    //文字变更
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
      //搜索文字触发回调
      print(" 输入 searchText: \(searchText)")
    }
   
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
      print("键盘上面点击搜索 \(searchBar.text)")
    }
}
```

响应2个逻辑,第一个就是文字的变化,当文字空的时候,我们需要清空搜索结果,显示搜索历史。

当点击键盘的搜索按钮的时候,我们需要搜索对应的商品,然后更新tableview。



给出完整的代码。

```swift
//
//FindViewController.swift
//uitable
//
//Created by Alice on 2021/3/8.
//

import UIKit
import SnapKit
class FindViewController: BaseViewController, UISearchBarDelegate{

    private lazy var lab: UILabel = {
      let label = UILabel()
      return label
    }()
   
    private lazy var searchBox: UISearchBar = {
      let searchView = UISearchBar()
      return searchView
    }()

    override func viewDidLoad() {
      super.viewDidLoad()
      //标题
      title = "搜索"
      view.addSubview(lab)
      //搜索
      view.addSubview(searchBox)
      lab.text = "find"
      lab.snp.makeConstraints { (make) in
            make.center.equalToSuperview()
      }
      
      searchBox.delegate = self
      //约束搜索
      searchBox.snp.makeConstraints { (mm) in
            mm.left.equalToSuperview()
            mm.right.equalToSuperview()
            mm.top.equalTo(view.safeAreaLayoutGuide.snp.top)
            mm.height.equalTo(60)
      }
    }
}

extension FindViewController{
    //文字变更
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
      //搜索文字触发回调
      print(" 输入 searchText: \(searchText)")
    }
   
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
      print("键盘上面点击搜索 \(searchBar.text)")
    }
}

```

---

> 接下里,就是根据搜索框的内容,进行商品搜索了。
>
> 最近有点事情,更新慢了。



代码地址:

https://github.com/cat13954/IOSUiTableViewSample



个人博客地址

https://www.bbsios.xyz

lyl610abc 发表于 2021-4-14 11:08

前来支持大佬了{:301_997:}

debug_cat 发表于 2021-4-14 14:31

lyl610abc 发表于 2021-4-14 11:08
前来支持大佬了

{:301_997:}万分感谢

husky9527 发表于 2021-4-15 11:17

看看进度如何了

debug_cat 发表于 2021-4-18 20:42

husky9527 发表于 2021-4-15 11:17
看看进度如何了

最近家里有的事情比较忙,所以进度拉下了。
页: [1]
查看完整版本: ios[ios]UISearchBar学习(连载15)