iOS.UIKit.14.UITableView -- UISearchBar

1、案例介绍:一个具备搜索功能的表视图,如图01,02,03

图01图02图03

2、Main.storyboard,如图04

图04

3、.h


#import <UIKit/UIKit.h>

@interface CQ23ViewController : UITableViewController<UISearchBarDelegate, UISearchDisplayDelegate>
// 搜索栏
@property (weak, nonatomic) IBOutlet UISearchBar *searchBar;
// 所有队伍集合
@property (nonatomic, strong) NSArray *listTeams;
// 查询后的队伍集合
@property (nonatomic, strong) NSMutableArray *listFilterTeams;

// 按条件查询,加载查询出的内容,给listFilterTeams赋值
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSUInteger)scope;

@end

4、.m


#import "CQ23ViewController.h"

@interface CQ23ViewController ()

@end

@implementation CQ23ViewController

- (void)viewDidLoad
{
[super viewDidLoad];

//设定搜索栏ScopeBar隐藏
[self.searchBar setShowsScopeBar:NO];
[self.searchBar sizeToFit];

NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:@"team"
ofType:@"plist"];
//获取属性列表文件中的全部数据
self.listTeams = [[NSArray alloc] initWithContentsOfFile:plistPath];

//初次进入查询所有数据
[self filterContentForSearchText:@"" scope:-1];
}

- (void)viewDidUnload
{
[self setSearchBar:nil];
[super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

#pragma mark Content Filtering
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSUInteger)scope;
{

if([searchText length]==0)
{
//查询所有
self.listFilterTeams = [NSMutableArray arrayWithArray:self.listTeams];
return;
}

NSPredicate *scopePredicate;
NSArray *tempArray ;

switch (scope) {
case 0: //英文
scopePredicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c] %@",searchText];
tempArray =[self.listTeams filteredArrayUsingPredicate:scopePredicate];
self.listFilterTeams = [NSMutableArray arrayWithArray:tempArray];

break;
case 1:
scopePredicate = [NSPredicate predicateWithFormat:@"SELF.image contains[c] %@",searchText];
tempArray =[self.listTeams filteredArrayUsingPredicate:scopePredicate];
self.listFilterTeams = [NSMutableArray arrayWithArray:tempArray];

break;
default:
//查询所有
self.listFilterTeams = [NSMutableArray arrayWithArray:self.listTeams];
break;
}
}

#pragma mark --UITableViewDataSource 协议方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.listFilterTeams count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

NSUInteger row = [indexPath row];
NSDictionary *rowDict = [self.listFilterTeams objectAtIndex:row];
cell.textLabel.text = [rowDict objectForKey:@"name"];
cell.detailTextLabel.text = [rowDict objectForKey:@"image"];

NSString *imagePath = [rowDict objectForKey:@"image"];
imagePath = [imagePath stringByAppendingString:@".png"];
cell.imageView.image = [UIImage imageNamed:imagePath];

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;
}

#pragma mark --UISearchBarDelegate 协议方法
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
// 当点击取消按钮,查询所有
[self filterContentForSearchText:@"" scope:-1];
}

#pragma mark - UISearchDisplayController Delegate Methods
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
// 当文本内容发生改变时候,向表视图数据源发出重新加载消息
[self filterContentForSearchText:searchString scope:self.searchBar.selectedScopeButtonIndex];
//YES情况下表视图可以重新加载
return YES;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption
{
// 当Scope Bar选择发生变化时候,向表视图数据源发出重新加载消息
[self filterContentForSearchText:self.searchBar.text scope:searchOption];
// YES情况下表视图可以重新加载
return YES;
}
@end

iOS.UIKit.14.UITableView -- UISearchBar

时间: 2024-10-02 00:11:42

iOS.UIKit.14.UITableView -- UISearchBar的相关文章

iOS.UIKit.17.UITableView -- Cells Operation

1.案例介绍:表视图中单元格的增加.删除.移动,如图01,02 图01图02 2..h #import <UIKit/UIKit.h> @interface CQ26ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate> @property (weak,nonatomic) IBOutlet UINavigationItem *navgation

iOS.UIKit.13.UITableView -- Simple

1.案例介绍:最简单的表视图,如图01 图01 2.team.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="

iOS.UIKit.15.UITableView -- Index

1.案例介绍:具备索引功能的分节表视图,如图01 图01 2.team_dictionary.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plis

iOS.UIKit.16.UITableView -- Static Cells

1.使用表视图的分组,静态单元格布局,如图01 图01 2.Main.storyboard

IOS开发系列--UITableView使用全面解析

--UIKit之UITableView 概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论.今天的主要内容包括: 基本介绍 数据源 代理 性能优化 UITableViewCell 常用操作 UITableViewController MVC模式 基本介绍 UITableVie

iOS开发系列--UITableView全面解析

概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论.今天的主要内容包括: 基本介绍 数据源 代理 性能优化 UITableViewCell 常用操作 UITableViewController MVC模式 基本介绍 UITableView有两种风格:UITableViewSt

iOS UIKit框架

1. 简介: UIKitk框架提供一系列的Class(类)来建立和管理iPhone OS应用程序的用户界面( UI )接口.应用程序对象.事件控制.绘图模型.窗口.视图和用于控制触摸屏等的接口.(PS1: 可以认为是操纵界面的一个API库)(PS2: UIKit框架是用在iOS平台上与之对应的是MAC OS X上的Application Kit,二者是姐妹框架,作用和目的没啥太大区别(我没有说实现目的的过程也一样),表混淆了) 2. 框架的入口: #import <UIKit/UIKit.h>

移动开发(IOS) – UIKit框架

1.UIView 1.1.所有 UI 控件都继承自 UIView. 1.2.每一个 UIView 都是一个容器,可以容纳其他 UIView.其中容器视图被称为父视图,而被包含的视图或者控件被成为子视图或者子控件. 1.3.视图对应的文件通常是 storyboard 或者 xib 文件.在许多 iOS 应用程序中,通常不必为视图编写任何代码. 1.4.UIView 负责界面的显示. 1.5.常用属性: superview 获得自己的父控件对象 subviews 获得自己的所有子控件对象 一个视图最

IOS MONO UITableViewConntroler Add UISearchBar

为原来的应用中的项目列表添加搜索条并且实现搜索方法. 当中动用到的几个类: UITableViewController(外层的类,列表显示的类) UITableViewSource(数据源,列表中行和分组数据获取的地方) UITableViewCell(单元格不多介绍,我的应用中搜索得到单元和平时使用的单元风格不一样功能也不一样,搜索得到的项目不能执行除了打开外的其他操作) UISearchBar (搜索框) UISearchDisplayController(搜索框的显示控制器) TableV