012 在Xcode4.5上创建IOS6.0应用 (高级控件 表视图 搜索框)

2023-12-10 02:38

本文主要是介绍012 在Xcode4.5上创建IOS6.0应用 (高级控件 表视图 搜索框),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IOS中的高级控件表视图(为表视图加入搜索框)


在上面的一篇博客中我们已经实现的表视图控件
011 在Xcode4.5上创建IOS6.0应用 (高级控件 表视图 分段表视图)

在前面的代码中,或者说基础上要相实现搜索框其实也非常简单,只要再加入一个控件


搜索框有两种,选择的时候我们要尽量选择下面一种因为下面那一种已经实现了该控件的一些方法

再加入SearchBar的协议,实现其的两个方法
协议:

UISearchBarDelegate

方法:

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText


就可以简单的实现一个搜索框的效果
下面就贴出详细的代码


ViewController.h
@interface ViewController : UIViewController
<UITableViewDataSource,UITableViewDelegate,UISearchBarDelegate>{NSMutableDictionary *allteams;NSMutableDictionary *teams;NSArray *teamsname;
}@property (nonatomic,retain)NSMutableDictionary *allteams;
@property (nonatomic,retain)NSMutableDictionary *teams;
@property (nonatomic,retain)NSArray *teamsname;-(void)resetSearch;@end

ViewController.m
@implementation ViewController@synthesize allteams;
@synthesize teams;
@synthesize teamsname;//重新搜索
-(void)resetSearch{self.teams = self.allteams;NSMutableArray *keyArray = [[NSMutableArray alloc] init];[keyArray addObjectsFromArray:[[teams allKeys] sortedArrayUsingSelector:@selector(compare:)] ];self.teamsname = keyArray;[keyArray release];
}//加载数据
- (void)viewDidLoad
{[super viewDidLoad];//下面为模式代码读取文件到代码中NSBundle *bundle = [NSBundle mainBundle];NSString *filePath = [bundle pathForResource:@"statedictionary" ofType:@"plist"];NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];self.allteams = dic;[dic release];[self resetSearch];
}//加载数据源
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{//返回段里面有几行NSString *name = [teamsname objectAtIndex:section];NSArray *team = [teams objectForKey:name];return [team count];
}
//返回数量
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{return [teamsname count];
}
//返回每个段里面的名字
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{NSString *name = [teamsname objectAtIndex:section];return name;
}
//模式代码填充数据
-(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] autorelease];}NSUInteger section = [indexPath section];NSUInteger row = [indexPath row];NSString *name = [teamsname objectAtIndex:section];NSArray*team = [teams objectForKey:name];//返回协议的标题cell.textLabel.text = [team objectAtIndex:row];return cell;
}
//实现索引
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{return teamsname;
}
//实现表示图的方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{NSUInteger section = [indexPath section];NSUInteger row = [indexPath row];NSString *name = [teamsname objectAtIndex:section];NSArray *team = [teams objectForKey:name];NSString *selectedteam = [team objectAtIndex:row];NSString *message = [[NSString alloc] initWithFormat:@"你选择的号码是%@",selectedteam];UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"球队选择"message:message delegate:selfcancelButtonTitle:@"OK"otherButtonTitles:nil, nil];[alert show];[alert release];[message release];//实现点击时,让点击的那个选中慢慢消失[tableView deselectRowAtIndexPath:indexPath animated:YES];}//查询的方法
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{[self resetSearch];
}
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{if([searchText length] == 0){[self resetSearch];return;}NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];for(NSString *key in self.allteams){NSMutableArray *arry = [allteams valueForKey:key];NSMutableArray *newTeams = [[NSMutableArray alloc]init];for(NSString *teamName in arry){if([teamName rangeOfString:searchText options:NSCaseInsensitiveSearch].location !=NSNotFound){[newTeams addObject:teamName];}}if([newTeams count] > 0){[dict setObject:newTeams forKey:key];}[newTeams release];}self.teamsname = [[dict allKeys]sortedArrayUsingSelector:@selector(compare:)];self.teams = dict;[dict release];
}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}- (void)dealloc
{[allteams release];[teams release];[teamsname release];[super dealloc];
}@end

最后看看效果图

这篇关于012 在Xcode4.5上创建IOS6.0应用 (高级控件 表视图 搜索框)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/475796

相关文章

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字