- 浏览: 258863 次
- 性别:
- 来自: 深圳
最新评论
-
whizkid:
[img] private void enableNdefEx ...
android通过NFC读写数据 -
zhangminglife:
您好!不错,最近正在弄这个东西,能否把demo发给我一份谢谢了 ...
SSL双向认证java实现(转) -
water卡:
android如何调用显示和隐藏系统默认的输入法 -
water卡:
android如何调用显示和隐藏系统默认的输入法 -
sjp524617477:
good
生成android使用的BKS证书
UISearchBar and UITableView是我们很常用的组合,在uisearchbar搜索之后,在uitableview显示你搜索后的数据,先看最终效果图如下:
拖入UISearchBar and UITableView两个控件,SearchViewController.h代码如下:
//
// SearchViewController.h
//
#import <UIKit/UIKit.h>
@interface SearchViewController : UIViewController
<UISearchBarDelegate, UITableViewDataSource> {
NSMutableArray *tableData;
UIView *disableViewOverlay;
UITableView *theTableView;
UISearchBar *theSearchBar;
}
@property(retain) NSMutableArray *tableData;
@property(retain) UIView *disableViewOverlay;
@property (nonatomic, retain) IBOutlet UITableView *theTableView;
@property (nonatomic, retain) IBOutlet UISearchBar *theSearchBar;
- (void)searchBar:(UISearchBar *)searchBar activate:(BOOL) active;
@end
SearchViewController.m 如下:
//
// SearchViewController.m
//
#import "SearchViewController.h"
@implementation SearchViewController
@synthesize tableData;
@synthesize disableViewOverlay;
@synthesize theSearchBar;
@synthesize theTableView;
// Initialize tableData and disabledViewOverlay
- (void)viewDidLoad {
[super viewDidLoad];
self.tableData =[[NSMutableArray alloc]init];
self.disableViewOverlay = [[UIView alloc]
initWithFrame:CGRectMake(0.0f,44.0f,320.0f,416.0f)];
self.disableViewOverlay.backgroundColor=[UIColor blackColor];
self.disableViewOverlay.alpha = 0;
}
// Since this view is only for searching give the UISearchBar
// focus right away
- (void)viewDidAppear:(BOOL)animated {
[self.theSearchBar becomeFirstResponder];
[super viewDidAppear:animated];
}
#pragma mark -
#pragma mark UISearchBarDelegate Methods
- (void)searchBar:(UISearchBar *)searchBar
textDidChange:(NSString *)searchText {
// We don't want to do anything until the user clicks
// the 'Search' button.
// If you wanted to display results as the user types
// you would do that here.
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
// searchBarTextDidBeginEditing is called whenever
// focus is given to the UISearchBar
// call our activate method so that we can do some
// additional things when the UISearchBar shows.
[self searchBar:searchBar activate:YES];
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
// searchBarTextDidEndEditing is fired whenever the
// UISearchBar loses focus
// We don't need to do anything here.
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
// Clear the search text
// Deactivate the UISearchBar
searchBar.text=@"";
[self searchBar:searchBar activate:NO];
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
// Do the search and show the results in tableview
// Deactivate the UISearchBar
// You'll probably want to do this on another thread
// SomeService is just a dummy class representing some
// api that you are using to do the search
NSArray *results = [SomeService doSearch:searchBar.text];
[self searchBar:searchBar activate:NO];
[self.tableData removeAllObjects];
[self.tableData addObjectsFromArray:results];
[self.theTableView reloadData];
}
// We call this when we want to activate/deactivate the UISearchBar
// Depending on active (YES/NO) we disable/enable selection and
// scrolling on the UITableView
// Show/Hide the UISearchBar Cancel button
// Fade the screen In/Out with the disableViewOverlay and
// simple Animations
- (void)searchBar:(UISearchBar *)searchBar activate:(BOOL) active{
self.theTableView.allowsSelection = !active;
self.theTableView.scrollEnabled = !active;
if (!active) {
[disableViewOverlay removeFromSuperview];
[searchBar resignFirstResponder];
} else {
self.disableViewOverlay.alpha = 0;
[self.view addSubview:self.disableViewOverlay];
[UIView beginAnimations:@"FadeIn" context:nil];
[UIView setAnimationDuration:0.5];
self.disableViewOverlay.alpha = 0.6;
[UIView commitAnimations];
// probably not needed if you have a details view since you
// will go there on selection
NSIndexPath *selected = [self.theTableView
indexPathForSelectedRow];
if (selected) {
[self.theTableView deselectRowAtIndexPath:selected
animated:NO];
}
}
[searchBar setShowsCancelButton:active animated:YES];
}
#pragma mark -
#pragma mark UITableViewDataSource Methods
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return [tableData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"SearchResult";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:MyIdentifier] autorelease];
}
id *data = [self.tableData objectAtIndex:indexPath.row];
cell.textLabel.text = data.name;
return cell;
}
#pragma mark -
#pragma mark Memory Management Methods
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[theTableView release], theTableView = nil;
[theSearchBar release], theSearchBar = nil;
[tableData dealloc];
[disableViewOverlay dealloc];
[super dealloc];
}
@end
拖入UISearchBar and UITableView两个控件,SearchViewController.h代码如下:
//
// SearchViewController.h
//
#import <UIKit/UIKit.h>
@interface SearchViewController : UIViewController
<UISearchBarDelegate, UITableViewDataSource> {
NSMutableArray *tableData;
UIView *disableViewOverlay;
UITableView *theTableView;
UISearchBar *theSearchBar;
}
@property(retain) NSMutableArray *tableData;
@property(retain) UIView *disableViewOverlay;
@property (nonatomic, retain) IBOutlet UITableView *theTableView;
@property (nonatomic, retain) IBOutlet UISearchBar *theSearchBar;
- (void)searchBar:(UISearchBar *)searchBar activate:(BOOL) active;
@end
SearchViewController.m 如下:
//
// SearchViewController.m
//
#import "SearchViewController.h"
@implementation SearchViewController
@synthesize tableData;
@synthesize disableViewOverlay;
@synthesize theSearchBar;
@synthesize theTableView;
// Initialize tableData and disabledViewOverlay
- (void)viewDidLoad {
[super viewDidLoad];
self.tableData =[[NSMutableArray alloc]init];
self.disableViewOverlay = [[UIView alloc]
initWithFrame:CGRectMake(0.0f,44.0f,320.0f,416.0f)];
self.disableViewOverlay.backgroundColor=[UIColor blackColor];
self.disableViewOverlay.alpha = 0;
}
// Since this view is only for searching give the UISearchBar
// focus right away
- (void)viewDidAppear:(BOOL)animated {
[self.theSearchBar becomeFirstResponder];
[super viewDidAppear:animated];
}
#pragma mark -
#pragma mark UISearchBarDelegate Methods
- (void)searchBar:(UISearchBar *)searchBar
textDidChange:(NSString *)searchText {
// We don't want to do anything until the user clicks
// the 'Search' button.
// If you wanted to display results as the user types
// you would do that here.
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
// searchBarTextDidBeginEditing is called whenever
// focus is given to the UISearchBar
// call our activate method so that we can do some
// additional things when the UISearchBar shows.
[self searchBar:searchBar activate:YES];
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
// searchBarTextDidEndEditing is fired whenever the
// UISearchBar loses focus
// We don't need to do anything here.
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
// Clear the search text
// Deactivate the UISearchBar
searchBar.text=@"";
[self searchBar:searchBar activate:NO];
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
// Do the search and show the results in tableview
// Deactivate the UISearchBar
// You'll probably want to do this on another thread
// SomeService is just a dummy class representing some
// api that you are using to do the search
NSArray *results = [SomeService doSearch:searchBar.text];
[self searchBar:searchBar activate:NO];
[self.tableData removeAllObjects];
[self.tableData addObjectsFromArray:results];
[self.theTableView reloadData];
}
// We call this when we want to activate/deactivate the UISearchBar
// Depending on active (YES/NO) we disable/enable selection and
// scrolling on the UITableView
// Show/Hide the UISearchBar Cancel button
// Fade the screen In/Out with the disableViewOverlay and
// simple Animations
- (void)searchBar:(UISearchBar *)searchBar activate:(BOOL) active{
self.theTableView.allowsSelection = !active;
self.theTableView.scrollEnabled = !active;
if (!active) {
[disableViewOverlay removeFromSuperview];
[searchBar resignFirstResponder];
} else {
self.disableViewOverlay.alpha = 0;
[self.view addSubview:self.disableViewOverlay];
[UIView beginAnimations:@"FadeIn" context:nil];
[UIView setAnimationDuration:0.5];
self.disableViewOverlay.alpha = 0.6;
[UIView commitAnimations];
// probably not needed if you have a details view since you
// will go there on selection
NSIndexPath *selected = [self.theTableView
indexPathForSelectedRow];
if (selected) {
[self.theTableView deselectRowAtIndexPath:selected
animated:NO];
}
}
[searchBar setShowsCancelButton:active animated:YES];
}
#pragma mark -
#pragma mark UITableViewDataSource Methods
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return [tableData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"SearchResult";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:MyIdentifier] autorelease];
}
id *data = [self.tableData objectAtIndex:indexPath.row];
cell.textLabel.text = data.name;
return cell;
}
#pragma mark -
#pragma mark Memory Management Methods
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[theTableView release], theTableView = nil;
[theSearchBar release], theSearchBar = nil;
[tableData dealloc];
[disableViewOverlay dealloc];
[super dealloc];
}
@end
发表评论
-
iPhone开发关于UDID和UUID的一些理解
2013-03-20 15:39 1140一.UDID(Unique Device Identifi ... -
卸载xcode4.2
2012-11-20 22:59 937卸载xcode4.2 Terminal: sudo < ... -
XCode 4.2支持iOS 5.1.1真机调试的实现 .
2012-11-20 22:25 1478目前市面上的ios设备,操作系统都是5.1.1的版本了。但是偶 ... -
Objective-C实现信用卡校验
2012-07-09 11:00 1005Objective-C实现信用卡校验(Luhn algorit ... -
object-c:property,assign,copy,retain,release区别
2012-06-01 17:03 1093例子: @property(nonatomic,retain) ... -
mac终端命令大全
2012-05-25 17:17 1546可以在终端里用 rm -rf ... -
xcode 编译静态库
2012-05-25 16:53 1409这里以libcurl 为例: 1.首先需要下载 ... -
IOS中设置使用GDataXML解析类库
2012-05-24 18:01 2021如何在项目中设置使用GDataXML解析类库 1. 从http ... -
ios框架
2012-05-21 16:02 11251.ASIHTTPRequest 大名鼎鼎的asi很多人应该 ... -
iphone里读取gb2312(中文)编码文件或者二进制流。
2011-09-06 17:37 1552说到文字编码,与文件读写打过交道的软件开发人员应该都知道,比如 ... -
IPhone短信相关部分研究(转载)
2011-09-06 10:06 1509短信发送和截获 方式一: 打 开/dev/tty.debu ... -
iOS4.0程序内发短信
2011-09-06 10:05 1303OS4.0新加入了MFMessageComposeViewCo ... -
Xcode4 SVN配置
2011-09-01 17:17 1080Xcode SVN配置 编辑 ~/.subversion/co ... -
stretchableImageWithLeftCapWidth:topCapHeight:函数用法 总结
2011-08-09 16:25 2176stretchableImageWithLeftCapWidt ... -
iPhone开发中的问题整理(一)
2011-08-08 23:16 1075看到很刚开始开发iPhone软件的朋友问很多问题,其实同样的问 ... -
iPhone多线程编程初体验
2011-08-08 22:24 1070iPhone多线程编程初体验 2011-06-07 17:35 ... -
iphone多线程的使用
2011-08-08 22:15 933以下是开发初期收集整 ... -
多线程之NSInvocationOperation
2011-08-08 22:09 656多线程编程是防止主线程堵塞,增加运行效率等等的最佳方法。而原始 ... -
iPhone上的JSON
2011-08-08 22:04 910JSON我就不多解释了,需要更多信息的朋友请到json.org ... -
循环使用整个NSArray内的对象
2011-08-08 22:04 943循环使用整个NSArray内的对象是非常常用的了,而且最近我在 ...
相关推荐
这个“IOS iphone UITableView简单例子”是一个基础的教程,旨在帮助开发者理解如何在iPhone应用中实现UITableView的基本功能。在这个项目中,我们将会看到如何创建两个不同的表视图区域,并且在用户点击某一行时弹...
在iOS开发中,UITableView是构建用户界面的重要组件,特别是在展示大量数据时,如商品列表、新闻摘要等。这个“UITableView的性能优化”示例旨在帮助初学者理解和掌握如何有效地优化UITableView,以提供流畅的用户...
实现搜索功能,你可以使用UISearchBar与UITableView配合。当用户在UISearchBar中输入时,实时更新过滤后的数据源,并调用`reloadData()`刷新表格视图。以下是一个简单的例子: ```swift func searchBar(_ searchBar...
`UISearchBar`通常与`UITableView`或`UICollectionView`结合使用,用于实现搜索功能,为用户提供便捷的数据过滤体验。本文将详细介绍`UISearchBar`的工作原理、常见用法以及如何将其与`UITableView`集成。 **1. ...
通过分析HJSearchUIDemo项目,开发者可以学习到如何结合UISearchBar和UITableView创建灵活且用户体验良好的搜索界面,同时了解如何处理搜索输入、过滤数据和更新UI。这个示例对于初学者和有经验的iOS开发者来说都是...
实现 app 中常见的搜索框(UISearchBar)在列表视图中的滚动行为。本代码实现了三种情况,一种是搜索框始终位于列表的顶部,列表的拖动时搜索框都固定不动。第二种是,列表视图刚加载时,搜索框隐藏在视图的顶部,当...
这个例子将探讨如何利用`UITableView`结合JSON解析来显示数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成。在iOS应用中,我们经常需要从服务器...
在iOS开发中,UITableView是一个至关重要的组件,它用于展示数据列表,常见的如联系人列表、邮件收件箱等。这个“iOS基础——通过案例学知识之UITableView”主题将引导我们深入理解如何有效地使用UITableView来构建...
### IPhone之UITableView详解 #### 一、前言 UITableView 是 iOS 开发中非常重要的一个控件,用于显示数据列表。相比于 UIButton 等简单控件,UITableView 的使用较为复杂,涉及较多的概念与方法。本文将详细介绍 ...
总的来说,结合UITableView和UISearchBar,我们可以提供一个强大且直观的搜索功能,让用户能够快速找到所需的信息。在实际开发中,还需要注意性能优化,比如使用异步加载数据,以及在用户输入时避免不必要的数据刷新...
本教程将通过一个具体的例子,演示如何在UITableView中使用自定义的UITableViewCell。我们采用的是Model-View-Controller(MVC)架构,这是一种常见的软件设计模式,可以有效分离业务逻辑、数据与用户界面。 首先,...
在iOS开发中,UISearchBar是用户界面中一个非常重要的组件,它用于实现搜索功能,让用户可以方便快捷地输入关键词进行查询。UISearchBar不仅提供基本的文本输入,还常常结合AutoComplete(自动完成)功能,来提升...
在iOS开发中,UISearchDisplayController是用于实现UITableView搜索功能的关键组件。这个控制器提供了一种简单的方法来在UITableView中添加一个可搜索的界面,让用户能够快速查找并筛选列表中的数据。下面将详细介绍...
在Swift编程语言中,UITableView是iOS应用开发中最常用的控件之一,用于展示列表或表格数据。这个教程将深入探讨如何使用Swift与UITableView以及协议进行交互,以创建功能丰富的用户界面。我们将关注以下关键知识点...
iOS 开发中 UITableView 的使用详解 UITableView 是 iOS 开发中最常用的控件之一,用于显示列表数据。它类似于 Android 中的 ListView,都是用于显示列表数据的控件。在 iOS 开发中,UITableView 是一个非常重要的...
UITableView是iOS应用开发中不可或缺的一部分,特别是在Swift编程环境中。它是一种用于显示大量数据的视图控件,可以灵活地展示列表或表格形式的信息。在Swift中,UITableView的使用涉及到多个知识点,包括数据源...
在iOS开发中,UITableView是应用最广泛的一种控件,它被用来展示列表或者表格数据,类似于Android中的ListView。本教程将带你入门iPhone上的UITableView使用,通过一个简单的示例项目"**MyTableView**"来深入理解其...
在iOS开发中,`UITableView` 是一个非常常用且强大的组件,用于展示列表数据。然而,在实际应用中,我们经常会遇到一个问题:当用户在`UITableView`中的输入框(如UITextField)中输入时,弹出的键盘可能会遮挡住...
这篇博客"用UITableView进行多选的代码例子"提供了如何实现UITableView多选功能的具体示例。在iOS应用中,多选功能常常用于批量删除、编辑或标记项目。 首先,为了实现多选,我们需要开启UITableView的多选模式。在...
在iOS开发中,UITableView是一种非常重要的视图组件,用于展示数据列表。当表格中的数据分为多个部分(sections)时,每个部分通常会有一个header视图,用来标识该部分的主题。然而,随着数据量的增大,如果对每个...