单击搜索栏时如何导航到另一个视图控制器

时间:2019-05-15 21:59:34

标签: ios swift xcode search uisearchbar

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

但是接下来,我想导航到另一个在集合视图中包含UIsearchcontroller的视图控制器,并在单击“取消”时将用户带回到上一个视图。 (非常类似于Facebook或Instagram对搜索栏控制器的使用)

无论如何,我可以使用搜索栏作为按钮来导航到处理所有搜索功能的下一个视图控制器吗?

这是我到目前为止对搜索栏的了解。

    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
    }

这样,当您单击搜索栏时,不会获得显示激活的搜索栏的效果(如果有意义)。当您点击搜索栏时,没有任何效果,只是将您带到(实际的)搜索视图控制器,然后搜索栏处于活动状态,并且显示带有取消按钮的键盘。我希望这是有道理的,如果有人希望举个例子,请转到Instagram,FB或Pinterest,然后点击其搜索栏或搜索图标,您会看到。

1 个答案:

答案 0 :(得分:1)

在第一个视图控制器中添加"invocationResponse": null,。在UISearchBarDelegate方法中,提供第二个视图控制器。

searchBarTextDidBeginEditing