UINavigationController 中的 UISearchBar
UISearchBar in UINavigationController
我想以编程方式将 UISearchBar
放入 UINavigationController
,而不是替换 UINavBar
标题,因为 我希望显示大标题。请参阅 iOS 上的文件应用程序。
这是我的.swift
class Search: UITableViewController, UISearchBarDelegate
override func viewDidLoad() {
super.viewDidLoad()
searchBar()
}
func searchBar() {
let searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController
navigationItem.searchController?.searchBar.placeholder = "search".localized
navigationItem.searchController?.dimsBackgroundDuringPresentation = false
navigationItem.hidesSearchBarWhenScrolling = false
}
重点是:通过将 nil
更改为实际的 searchResultsController
,在搜索栏中键入文本后,整个导航控制器(带有搜索栏和键入的文本)被 searchResultsController
视图所取代。 输入简短内容时没有搜索栏。
我正在努力在应用程序中使用 iOS 11/12 原生外观,将搜索栏放入 TableViewController
在这里是不可能的。有人可以帮助我吗?
如果您不需要不同的视图控制器来显示结果,只需使用(它不会使您的导航栏消失):
let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
之后不要更改该值。
你的大部分代码都很好,但是你需要实现 UISearchResultsUpdating 协议来检测更新(当用户在搜索栏中写入时)并使用 table 视图(在你的视图控制器中)来显示搜索结果。
您可以通过在函数内重新加载 table 视图的数据来做到这一点:updateSearchResults(for searchController:) 在用搜索栏内的文本过滤您想要的数据之后。您可以阅读这篇关于该主题的好书 tutorial 以获取更多信息。
我想以编程方式将 UISearchBar
放入 UINavigationController
,而不是替换 UINavBar
标题,因为 我希望显示大标题。请参阅 iOS 上的文件应用程序。
这是我的.swift
class Search: UITableViewController, UISearchBarDelegate
override func viewDidLoad() {
super.viewDidLoad()
searchBar()
}
func searchBar() {
let searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController
navigationItem.searchController?.searchBar.placeholder = "search".localized
navigationItem.searchController?.dimsBackgroundDuringPresentation = false
navigationItem.hidesSearchBarWhenScrolling = false
}
重点是:通过将 nil
更改为实际的 searchResultsController
,在搜索栏中键入文本后,整个导航控制器(带有搜索栏和键入的文本)被 searchResultsController
视图所取代。 输入简短内容时没有搜索栏。
我正在努力在应用程序中使用 iOS 11/12 原生外观,将搜索栏放入 TableViewController
在这里是不可能的。有人可以帮助我吗?
如果您不需要不同的视图控制器来显示结果,只需使用(它不会使您的导航栏消失):
let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
之后不要更改该值。
你的大部分代码都很好,但是你需要实现 UISearchResultsUpdating 协议来检测更新(当用户在搜索栏中写入时)并使用 table 视图(在你的视图控制器中)来显示搜索结果。 您可以通过在函数内重新加载 table 视图的数据来做到这一点:updateSearchResults(for searchController:) 在用搜索栏内的文本过滤您想要的数据之后。您可以阅读这篇关于该主题的好书 tutorial 以获取更多信息。