UISearchBar 和 UISearchBarController 之间的区别?
Difference between UISearchBar and UISearchBarController?
我对 UISearchBar/UISearchBarDelegate
和 UISearchBarController
之间的区别感到困惑。
现在,这就是我正在做的来实现我的搜索栏:
class SearchViewController: UIViewController {
@IBOutlet weak var searchBar: UISearchBar!
}
extension SearchViewController: UISearchBarDelegate {
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.resignFirstResponder()
if !searchBar.text!.isEmpty {
performSegue(withIdentifier: "Search", sender: searchBar.text!)
}
}
}
我在网上看到有人在做这样的事情:
let searchController = UISearchController(searchResultsController: nil)
这和我现在做的有什么区别?
大致。
UIxxx
是在屏幕上呈现的对象的 class,(UIButton
,等等)
UIxxxController
是对象的class,协调屏幕上的对象(接收事件等)
UIxxxDelegate
class 嵌入功能代码的对象,让 UIxxx
对象按照您想要的方式运行(填充内容等)。
您的代码看起来像是通过 IB 连接的。在互联网上找到的代码看起来控制器是直接在代码中构建的,而不是通过 IB; UISearchController
已实例化。
你的问题有点类似于问 "What is the difference between UIView
and UIViewController
?"
UISearchBar
是一个 视图 。它有一个文本字段和(可选)一个按钮,仅此而已。
UISearchController
是一个 控制器 ,它控制着 "searching" 更抽象的行为。它的工作之一是控制其 searchBar
的行为,但它还有许多其他工作,例如告诉 searchResultsUpdater
它应该更新搜索结果(因为搜索栏中的文本有改变,或其他)。它还公开了 obscuresBackgroundDuringPresentation
和 hidesNavigationBarDuringPresentation
等属性,以控制当搜索栏是第一响应者时视图的外观。
如果您直接使用 UISearchBar
,那么您需要手动实现 UISearchController
为您做的所有这些事情。如果您打算创建 UISearchController
不提供的您自己的搜索行为类型,则可能需要这样做,但如果您只想在您的应用程序中使用普通的旧搜索功能,请使用 UISearchController
,因为它将为您节省很多时间。
我对 UISearchBar/UISearchBarDelegate
和 UISearchBarController
之间的区别感到困惑。
现在,这就是我正在做的来实现我的搜索栏:
class SearchViewController: UIViewController {
@IBOutlet weak var searchBar: UISearchBar!
}
extension SearchViewController: UISearchBarDelegate {
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.resignFirstResponder()
if !searchBar.text!.isEmpty {
performSegue(withIdentifier: "Search", sender: searchBar.text!)
}
}
}
我在网上看到有人在做这样的事情:
let searchController = UISearchController(searchResultsController: nil)
这和我现在做的有什么区别?
大致。
UIxxx
是在屏幕上呈现的对象的 class,(UIButton
,等等)UIxxxController
是对象的class,协调屏幕上的对象(接收事件等)UIxxxDelegate
class 嵌入功能代码的对象,让UIxxx
对象按照您想要的方式运行(填充内容等)。
您的代码看起来像是通过 IB 连接的。在互联网上找到的代码看起来控制器是直接在代码中构建的,而不是通过 IB; UISearchController
已实例化。
你的问题有点类似于问 "What is the difference between UIView
and UIViewController
?"
UISearchBar
是一个 视图 。它有一个文本字段和(可选)一个按钮,仅此而已。
UISearchController
是一个 控制器 ,它控制着 "searching" 更抽象的行为。它的工作之一是控制其 searchBar
的行为,但它还有许多其他工作,例如告诉 searchResultsUpdater
它应该更新搜索结果(因为搜索栏中的文本有改变,或其他)。它还公开了 obscuresBackgroundDuringPresentation
和 hidesNavigationBarDuringPresentation
等属性,以控制当搜索栏是第一响应者时视图的外观。
如果您直接使用 UISearchBar
,那么您需要手动实现 UISearchController
为您做的所有这些事情。如果您打算创建 UISearchController
不提供的您自己的搜索行为类型,则可能需要这样做,但如果您只想在您的应用程序中使用普通的旧搜索功能,请使用 UISearchController
,因为它将为您节省很多时间。