iOS 应用程序中的搜索栏17 Mar 2025 | 5 分钟阅读 在 iOS 应用程序中,我们经常需要使用一些关键字从列表中筛选数据。为此,Apple 提供了 UISearchBar,供用户在 iOS 应用程序中搜索项目集合。它是一种专门用于接收用户搜索相关信息(例如关键字)的视图。 在本文中,我们将讨论如何在 iOS 应用程序中使用搜索栏来实现用户搜索功能。但是,iOS 中的搜索栏仅提供用户界面;我们需要根据我们的需求实现任何过滤逻辑。 使用 UISearchBar这是在 iOS 应用程序中实现搜索功能最常用的方法。如果我们在屏幕上还有各种其他项目,例如集合视图、表格视图或栏按钮项目,则在 iOS 应用程序中使用 UISearchBar 具有灵活性。 简单来说,UISearchBar 提供了一个文本字段用于输入搜索文本、一个搜索按钮作为文本字段的右视图、一个书签按钮和一个取消按钮。我们需要符合 UISearchBarDelegate 协议并实现 UISearchBar 委托方法,以便在搜索栏中输入搜索文本或单击按钮时执行操作。 在 swift 中,我们使用 UISearchBar 类对象来实现搜索栏。 UISearchBar 的语法如下所示。 UISearchBar 类包含以下属性以更改外观并引发事件触发委托。 序号 | 属性 | 描述 |
---|
1 | var delegate: UISearchBarDelegate? | 它表示 UISearchBar 的委托对象。视图控制器需要符合 UISearchBarDelegate 协议并实现其委托方法。 | 2 | var placeholder: String? | 它表示显示在搜索文本字段中的占位符文本。 | 3 | var prompt: String? | 它表示显示在搜索栏顶部的单行文本。 | 4 | var text: String? | 它表示用于在集合视图或表格视图中显示的数据列表中进行搜索的搜索文本。 | 5 | var barTintColor: UIColor? | 它表示要应用于搜索文本字段背景的色调颜色。 | 6 | var searchBarStyle: UISearchBar.Style | 它表示在 UISearchBar.Style Enum 的值中分配的搜索栏样式。 | 7 | enum UISearchBar.Style | 它是一个枚举类型变量,表示搜索栏是否具有背景。 | 8 | var tintColor: UIColor! | 它表示要应用于搜索栏中关键元素的色调颜色。 | 9 | var isTranslucent: Bool | 它是一个布尔类型属性,用于确定搜索栏是否为半透明。 | 10 | var barStyle: UIBarStyle | 它是枚举类型 UIBarStyle 的一个实例,用于指定搜索栏外观。 | 11 | enum UIBarStyle | 它表示不同类型视图的样式外观。 | 12 | var inputAssistantItem: UITextInputAssistantItem | 它是用于配置键盘快捷栏的输入助手项目。 | 13 | var showsBookmarkButton: Bool | 它是一个布尔类型属性,表示书签按钮是否显示在搜索栏中。 | 14 | var showsCancelButton: Bool | 它是一个布尔类型属性,表示取消按钮是否显示在搜索栏中。 | 15 | var showsSearchResultsButton: Bool | 它是一个布尔类型属性,表示搜索结果按钮是否显示在搜索栏中。 | 16 | var isSearchResultsButtonSelected: Bool | 它是一个布尔类型属性,表示搜索结果按钮是否已在搜索栏中被选中。 | 17 | var scopeButtonTitles: [String]? | 它是一个字符串数组,用于指定范围按钮的标题。 | 18 | var selectedScopeButtonIndex: Int | 它表示所选范围按钮的索引。 | 19 | var showsScopeBar: Bool | 它是一个布尔类型属性,表示范围栏是否显示在搜索栏中。 | 20 | var backgroundImage: UIImage? | 这是在 UISearchBar 中显示的背景图像。 |
以下是最重要的委托方法,用于触发用户操作。 序号 | 方法 | 描述 |
---|
1 | func searchBar(UISearchBar, textDidChange: String) | 此方法通知用户更改了搜索栏文本。 | 2 | func searchBarShouldBeginEditing(UISearchBar) -> Bool | 它询问委托,指定范围内的文本是否应替换为给定的文本。 | 3 | func searchBarTextDidBeginEditing(UISearchBar) | 此方法通知委托用户开始编辑搜索文本。 | 4 | func searchBarShouldEndEditing(UISearchBar) -> Bool | 它询问委托是否应该在指定的搜索栏中停止编辑。 | 5 | func searchBarTextDidEndEditing(UISearchBar) | 它通知委托用户已完成在搜索栏中编辑文本。 |
示例 让我们创建 XCode 项目,在其中我们将过滤表格视图中的数据。为此,请在 XCode 中创建一个名为 SearchBarExample 的项目。让我们在 Main.storyboard 中为该项目创建界面。 界面构建器在情节提要板中,首先,添加一个搜索栏,它将位于父视图的顶部。要添加搜索栏,请开始键入或在对象库中浏览搜索栏,如下所示。  现在,将搜索栏与视图顶部对齐,前导和尾随设置为 0,并分配给超级视图。现在,向 ViewController 添加一个 tableView,其中包含项目中的数据列表。  现在,在 ViewController 类中为搜索栏和表格视图创建出口。 ViewController.swift 由于我们在此应用程序中使用 UISearchBar 和 UITableView,因此我们需要使我们的视图控制器符合 UISearchBarDelegate、UITableViewDelegate UISearchBarDataSource 协议。 ViewController 具有以下代码,用于在项目中实现搜索功能。
|