首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想在swift中创建一个类似google的搜索栏

我想在swift中创建一个类似google的搜索栏
EN

Stack Overflow用户
提问于 2018-08-10 23:14:17
回答 1查看 4.4K关注 0票数 2

我有一个像“苹果”,“出现”,“爱资哈尔”,“代码”,"BCom“等数组。这个数组包含超过50万条记录。

现在我想做的是,放置一个类似于谷歌的UISearchBar,然后每当用户键入文本时,下拉列表将出现包含此文本的所有结果,用户可以从列表中选择一个。

例如,如果用户输入"a",那么下拉列表中将出现"apple“、”down“和"Azhar”。

我不想使用UITableView或其他任何东西来加载记录。每当用户输入任何单词时,它都应该从数组中收集记录,并进行下拉以显示这些记录。

我该怎么做呢?请提供必要的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-11 00:55:24

非常简单的代码可以做到这一点,搜索栏过滤器很容易,至于下拉菜单,我使用了一个名为'DropDown‘的第三方Pod,非常容易使用:https://github.com/AssistoLab/DropDown

代码语言:javascript
复制
import UIKit
import DropDown

class ViewController: UIViewController, UISearchBarDelegate {

var data: [String] = ["apple","appear","Azhar","code","BCom"]
var dataFiltered: [String] = []
var dropButton = DropDown()

@IBOutlet weak var searchBar: UISearchBar!

override func viewDidLoad() {
    super.viewDidLoad()

    dataFiltered = data

    dropButton.anchorView = searchBar
    dropButton.bottomOffset = CGPoint(x: 0, y:(dropButton.anchorView?.plainView.bounds.height)!)
    dropButton.backgroundColor = .white
    dropButton.direction = .bottom

    dropButton.selectionAction = { [unowned self] (index: Int, item: String) in
        print("Selected item: \(item) at index: \(index)") //Selected item: code at index: 0
    }
}

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    dataFiltered = searchText.isEmpty ? data : data.filter({ (dat) -> Bool in
        dat.range(of: searchText, options: .caseInsensitive) != nil
    })

    dropButton.dataSource = dataFiltered
    dropButton.show()
}

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    searchBar.setShowsCancelButton(true, animated: true)
    for ob: UIView in ((searchBar.subviews[0] )).subviews {
        if let z = ob as? UIButton {
            let btn: UIButton = z
            btn.setTitleColor(UIColor.white, for: .normal)
        }
    }
}

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
    searchBar.showsCancelButton = false
}

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    searchBar.resignFirstResponder()
    searchBar.text = ""
    dataFiltered = data
    dropButton.hide()
}
}

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51789511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档