gpt4 book ai didi

ios - 单击搜索栏时如何导航到另一个 View Controller

转载 作者:行者123 更新时间:2023-12-01 16:01:55 26 4
gpt4 key购买 nike

我有点卡在这里。我在导航栏中嵌入了一个搜索栏作为我想要的标题。

但是接下来我想导航到另一个在 Collection View 中包含 UIsearchcontroller 的 View Controller ,当点击取消时,用户将返回到前一个 View 。 (非常类似于 Facebook 或 Instagram 对搜索栏 Controller 的使用)

无论如何我可以使用搜索栏作为按钮导航到处理所有搜索功能的下一个 View Controller 吗?

这是我到目前为止的搜索栏内容。

    func setUpNavBar() {
let searchBar = UISearchBar()
searchBar.sizeToFit()
searchBar.searchBarStyle = .minimal
searchBar.placeholder = "Search by username"
searchBar.tintColor = UIColor.lightGray
searchBar.barTintColor = UIColor.lightGray
navigationItem.titleView = searchBar
searchBar.isTranslucent = true
}

编辑

只是添加到下面的答案中,如果有人遇到这个问题并且您想获得将搜索栏视为按钮的效果,请使用

  func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
self.present(UINavigationController(rootViewController: SearchBarController()), animated: true, completion: nil)
searchBar.setShowsCancelButton(false, animated: true)
return false
}

这样,当您单击搜索栏时,您不会获得显示搜索栏处于事件状态的效果(如果这有意义的话)。当您点击搜索栏时,没有任何效果,它只是将您带到(真实的)搜索 View Controller ,然后搜索栏处于事件状态并且键盘显示一个取消按钮。我希望这是有道理的,如果有人想要一个示例,请转到 Instagram、FB 或 Pinterest,然后点击他们的搜索栏或搜索图标,您就会看到。

最佳答案

在第一个 View Controller 中添加 UISearchBarDelegate。并在 searchBarTextDidBeginEditing 方法中呈现第二个 View Controller 。

//ViewController.swift
class ViewController: UIViewController, UISearchBarDelegate {
override func viewDidLoad() {
super.viewDidLoad()
setUpNavBar()
}
func setUpNavBar() {
let searchBar = UISearchBar()
searchBar.delegate = self
searchBar.sizeToFit()
searchBar.searchBarStyle = .minimal
searchBar.placeholder = "Search by username"
searchBar.tintColor = UIColor.lightGray
searchBar.barTintColor = UIColor.lightGray
navigationItem.titleView = searchBar
searchBar.isTranslucent = true
}
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
self.present(UINavigationController(rootViewController: SearchViewController()), animated: false, completion: nil)
}
}
//SearchViewController.swift
class SearchViewController: UIViewController {
let searchBar = UISearchBar()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
setUpNavBar()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
searchBar.becomeFirstResponder()
}
func setUpNavBar() {
searchBar.sizeToFit()
searchBar.searchBarStyle = .minimal
searchBar.placeholder = "Search by "
searchBar.tintColor = UIColor.lightGray
searchBar.barTintColor = UIColor.lightGray
navigationItem.titleView = searchBar
searchBar.isTranslucent = true
}
}

关于ios - 单击搜索栏时如何导航到另一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56158194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com