`
dcj3sjt126com
  • 浏览: 1870213 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

UISearchBar和UISearchBarController的使用

    博客分类:
  • IOS
阅读更多
//
//  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

 

分享到:
评论

相关推荐

    UISearchBar使用Demo

    在iOS开发中,`UISearchBar` 是一个非常重要的组件,用于实现用户在应用内进行文本搜索的功能。...在这个Demo中,你可以深入理解`UISearchBar`的使用,以及如何在Objective-C环境中与其他UI组件配合工作。

    uisearchbar 使用指南

    本指南将深入讲解`UISearchBar`的使用,包括基本设置、事件处理、自定义样式以及与其他UI元素的集成。 ### 一、创建和配置`UISearchBar` 在iOS开发中,我们通常使用Swift或Objective-C来创建`UISearchBar`。在...

    uisearchBar

    7. **手势处理**:UISearchBar在键盘弹出时可能会遮挡一部分内容,这时可以使用`becomeFirstResponder`和`resignFirstResponder`方法来处理键盘的显示和隐藏,配合手势识别器(如PanGesture)实现滚动时键盘的自动...

    UISearchBar在UINavigationBar上的实现以及UISearchDisplayController的使用

    在UINavigationBar上显示UISearchBar, 并实现UISearchDisplayController功能的小Demo, 更多讲解在http://www.cnblogs.com/sely-ios/p/Sely.html

    iOS-UISearchBar

    **iOS中的UISearchBar详解** 在iOS开发中,`UISearchBar`是苹果提供的一个非常重要的UI组件,它允许用户在应用内部进行文本搜索。`UISearchBar`通常与`...正确理解和使用`UISearchBar`能够极大地提升应用的用户体验。

    通过UItextField自定义UISearchBar

    本教程将详细讲解如何通过`UITextField`来实现`UISearchBar`的自定义功能,以及如何利用`UITextField`的代理方法来处理用户输入和响应。 首先,我们来看一下`UISearchBar`的基本结构。`UISearchBar`由一个`...

    swift-UISearchBar的一个基本重新实现更容易的主题更换和更好的动画

    总的来说,"swift-UISearchBar的一个基本重新实现更容易的主题更换和更好的动画"项目旨在提供一个更灵活、可自定义的搜索栏组件,使开发者能够轻松地根据应用需求定制搜索栏的外观和交互体验,提升用户的使用感受。...

    UISearchBar 修改占位符的放大镜

    在某些情况下,开发者可能需要自定义`UISearchBar` 的外观和行为,比如改变占位符的样式或移除默认的取消按钮。本文将深入探讨如何修改`UISearchBar` 的占位符放大镜、取消按钮以及占位符文本。 首先,我们关注占位...

    UISearchBar搜索AutoComplete下拉列表搜索提示

    这篇博客“UISearchBar搜索AutoComplete下拉列表搜索提示”可能详细介绍了如何集成和定制UISearchBar的自动完成功能。在这个过程中,开发者需要处理的关键知识点包括: 1. **UISearchBarDelegate协议**:实现这个...

    UISearchBar扩展类,可以实现点击完成收回键盘

    通过这种方式,我们可以轻松地在任何使用 `UISearchBar` 的地方实现点击“完成”后收回键盘的功能,而无需在每个视图控制器中重复编写相同的代码。这样的代码复用和封装,既提高了开发效率,又保持了代码的整洁。 ...

    ios-UISearchBar 不同样式的搜索框,代码简单.zip

    这个压缩包文件"ios-UISearchBar 不同样式的搜索框,代码简单.zip"包含了关于如何创建和定制`UISearchBar`样式的示例代码。 `UISearchBar` 的基本使用通常包括以下几个步骤: 1. **初始化**: 创建 `UISearchBar` ...

    ios-UISearchBarController 的简单Demo.zip

    下面我们将详细探讨UISearchBarController的基本概念、使用方法以及如何通过这个Demo来学习和理解其工作原理。 1. UISearchBarController简介: UISearchBarController 是 iOS 自带的一个UI控件,用于提供搜索功能...

    iOS中的UISearchBar搜索框组件基础使用指南

    以下是一份关于 `UISearchBar` 基础使用和自定义的详细指南: 1. **基本属性与方法** - `barStyle`: 决定了`UISearchBar`的样式,如 `UIBarStyleDefault` 或 `UIBarStyleBlackOpaque`。 - `text`: 获取或设置当前...

    UISearchBar搜索栏示例程序

    通过分析并实践"UISearchBarTest"示例程序,开发者能够全面了解UISearchBar的工作原理和使用方式,提升iOS应用的用户体验。同时,这也会涉及到如何在实际项目中整合搜索功能,以及如何优化搜索性能和用户体验。因此...

    ios-UISearchBar.zip

    在实际应用开发中,`UISearchBar` 的使用往往伴随着数据过滤和筛选操作。例如,在一个联系人列表应用中,用户输入关键词后,应用会实时过滤并显示匹配的联系人;在电商应用中,用户可以通过搜索栏查找特定商品。因此...

    iOS UISearchBar 搜索功能的 demo

    首先,`UISearchBar` 是一个位于导航栏或者表视图顶部的UI控件,通常用作数据过滤和搜索。它包含一个文本字段和一个可选的清除按钮,用户可以在其中输入关键词进行搜索。`UISearchBar`与`UISearchController`一起...

    ios-uisearchbar 自定义搜索框.zip

    1. **UISearchBar的基本使用**:首先,你需要了解UISearchBar的基本属性和方法,如`text`用于获取或设置搜索文本,`delegate`用于设置代理,以及`searchBar:textDidChange:`等代理方法,来监听用户输入的变化。...

    iOS中使用UISearchBar控件限制输入字数的实现方法

    有时候,我们可能需要限制用户在UISearchBar中输入的字符数量,以确保数据的有效性和避免不必要的处理负担。本篇文章将详细解释如何在iOS中使用UISearchBar控件来限制输入字数。 首先,我们需要了解UISearchBar的...

Global site tag (gtag.js) - Google Analytics