// // FirstViewController.m // UISearchBarControllerText // // Created by 杜承玖 on 14/10/24. // Copyright (c) 2014年 com.redianying. All rights reserved. // #import "FirstViewController.h" @interface FirstViewController () <UISearchBarDelegate, UISearchDisplayDelegate, UITableViewDataSource, UITableViewDelegate> @property (nonatomic, strong) UISearchBar * sb; @property (nonatomic, strong) UITableView * tv; @property (nonatomic, strong) UISearchDisplayController * sdc; @property (nonatomic, copy) NSArray *allItems; @property (nonatomic, copy) NSArray *searchResults; @end @implementation FirstViewController - (void)viewDidLoad { [super viewDidLoad]; NSArray *items = @[@"Code Geass", @"Asura Cryin'", @"Voltes V", @"Mazinger Z", @"Daimos"]; self.allItems = items; _sb = [[UISearchBar alloc] init]; _sb.placeholder = @"输入名称"; _sb.barStyle = UIBarStyleDefault; _sb.delegate = self; [_sb setScopeButtonTitles:@[@"First", @"Last"]]; [_sb setAutocapitalizationType:UITextAutocapitalizationTypeNone]; _tv = [[UITableView alloc] initWithFrame:self.view.frame]; _tv.frame = CGRectMake(0, 22, 320, 500); _tv.delegate = self; _tv.dataSource = self; [self.view addSubview:_tv]; [_tv setTableHeaderView:_sb]; _sdc = [[UISearchDisplayController alloc] initWithSearchBar:_sb contentsController:self]; _sdc.delegate = self; [_sdc setSearchResultsDataSource:self]; [_sdc setSearchResultsDelegate:self]; } #pragma mark - SearchBar - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{ // _tv.frame = CGRectMake(0, 22, 320, 500); return YES; } - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar{ // _tv.frame = CGRectMake(0, 22, 320, 500); return YES; } #pragma mark - SearchDisplayController - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString{ [self filterContentForSearchText:searchString scope: [[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]]; return YES; } - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption{ [self filterContentForSearchText:[self.searchDisplayController.searchBar text] scope: [[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:searchOption]]; return YES; } #pragma mark - Function - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope { NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@", searchText]; self.searchResults = [self.allItems filteredArrayUsingPredicate:resultPredicate]; } #pragma mark - UITableView - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { NSInteger rows = 0; if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]){ rows = [self.searchResults count]; }else{ rows = [self.allItems count]; } return rows; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } /* Configure the cell. */ if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]){ cell.textLabel.text = [self.searchResults objectAtIndex:indexPath.row]; }else{ cell.textLabel.text = [self.allItems objectAtIndex:indexPath.row]; } return cell; } @end
相关推荐
在iOS开发中,`UISearchBar` 是一个非常重要的组件,用于实现用户在应用内进行文本搜索的功能。...在这个Demo中,你可以深入理解`UISearchBar`的使用,以及如何在Objective-C环境中与其他UI组件配合工作。
本指南将深入讲解`UISearchBar`的使用,包括基本设置、事件处理、自定义样式以及与其他UI元素的集成。 ### 一、创建和配置`UISearchBar` 在iOS开发中,我们通常使用Swift或Objective-C来创建`UISearchBar`。在...
7. **手势处理**:UISearchBar在键盘弹出时可能会遮挡一部分内容,这时可以使用`becomeFirstResponder`和`resignFirstResponder`方法来处理键盘的显示和隐藏,配合手势识别器(如PanGesture)实现滚动时键盘的自动...
在UINavigationBar上显示UISearchBar, 并实现UISearchDisplayController功能的小Demo, 更多讲解在http://www.cnblogs.com/sely-ios/p/Sely.html
**iOS中的UISearchBar详解** 在iOS开发中,`UISearchBar`是苹果提供的一个非常重要的UI组件,它允许用户在应用内部进行文本搜索。`UISearchBar`通常与`...正确理解和使用`UISearchBar`能够极大地提升应用的用户体验。
本教程将详细讲解如何通过`UITextField`来实现`UISearchBar`的自定义功能,以及如何利用`UITextField`的代理方法来处理用户输入和响应。 首先,我们来看一下`UISearchBar`的基本结构。`UISearchBar`由一个`...
总的来说,"swift-UISearchBar的一个基本重新实现更容易的主题更换和更好的动画"项目旨在提供一个更灵活、可自定义的搜索栏组件,使开发者能够轻松地根据应用需求定制搜索栏的外观和交互体验,提升用户的使用感受。...
在某些情况下,开发者可能需要自定义`UISearchBar` 的外观和行为,比如改变占位符的样式或移除默认的取消按钮。本文将深入探讨如何修改`UISearchBar` 的占位符放大镜、取消按钮以及占位符文本。 首先,我们关注占位...
这篇博客“UISearchBar搜索AutoComplete下拉列表搜索提示”可能详细介绍了如何集成和定制UISearchBar的自动完成功能。在这个过程中,开发者需要处理的关键知识点包括: 1. **UISearchBarDelegate协议**:实现这个...
通过这种方式,我们可以轻松地在任何使用 `UISearchBar` 的地方实现点击“完成”后收回键盘的功能,而无需在每个视图控制器中重复编写相同的代码。这样的代码复用和封装,既提高了开发效率,又保持了代码的整洁。 ...
这个压缩包文件"ios-UISearchBar 不同样式的搜索框,代码简单.zip"包含了关于如何创建和定制`UISearchBar`样式的示例代码。 `UISearchBar` 的基本使用通常包括以下几个步骤: 1. **初始化**: 创建 `UISearchBar` ...
下面我们将详细探讨UISearchBarController的基本概念、使用方法以及如何通过这个Demo来学习和理解其工作原理。 1. UISearchBarController简介: UISearchBarController 是 iOS 自带的一个UI控件,用于提供搜索功能...
以下是一份关于 `UISearchBar` 基础使用和自定义的详细指南: 1. **基本属性与方法** - `barStyle`: 决定了`UISearchBar`的样式,如 `UIBarStyleDefault` 或 `UIBarStyleBlackOpaque`。 - `text`: 获取或设置当前...
通过分析并实践"UISearchBarTest"示例程序,开发者能够全面了解UISearchBar的工作原理和使用方式,提升iOS应用的用户体验。同时,这也会涉及到如何在实际项目中整合搜索功能,以及如何优化搜索性能和用户体验。因此...
在实际应用开发中,`UISearchBar` 的使用往往伴随着数据过滤和筛选操作。例如,在一个联系人列表应用中,用户输入关键词后,应用会实时过滤并显示匹配的联系人;在电商应用中,用户可以通过搜索栏查找特定商品。因此...
首先,`UISearchBar` 是一个位于导航栏或者表视图顶部的UI控件,通常用作数据过滤和搜索。它包含一个文本字段和一个可选的清除按钮,用户可以在其中输入关键词进行搜索。`UISearchBar`与`UISearchController`一起...
1. **UISearchBar的基本使用**:首先,你需要了解UISearchBar的基本属性和方法,如`text`用于获取或设置搜索文本,`delegate`用于设置代理,以及`searchBar:textDidChange:`等代理方法,来监听用户输入的变化。...
有时候,我们可能需要限制用户在UISearchBar中输入的字符数量,以确保数据的有效性和避免不必要的处理负担。本篇文章将详细解释如何在iOS中使用UISearchBar控件来限制输入字数。 首先,我们需要了解UISearchBar的...