UIKit 框架之UISearchBar、UITableViewController
// // tableViewController.m // tableVC // // Created by City--Online on 15/6/1. // Copyright (c) 2015年 CYW. All rights reserved. // #import "tableViewController.h" @interface tableViewController ()<UISearchBarDelegate,UIScrollViewDelegate> @property(nonatomic,strong) UISearchBar *searchBar; @property(nonatomic,strong) NSArray *allData; @property(nonatomic,strong) NSMutableArray *searchData; @property(nonatomic,assign) NSInteger pageIndex; @end @implementation tableViewController - (void)viewDidLoad { [super viewDidLoad]; _pageIndex=; //初始化数据 _allData=@[@"abcd11",@"abcd12",@"abcd13",@"abcd14"]; _searchData=[_allData copy]; //初始化UISearchBar _searchBar=[[UISearchBar alloc]initWithFrame:CGRectMake(, , [UIScreen mainScreen].bounds.size.width, )]; //样式 _searchBar.barStyle=UISearchBarStyleDefault; //代理 _searchBar.delegate=self; //文本内容 _searchBar.text=@"abcd"; //提示文字 _searchBar.prompt="; // //文本为空时显示内容 // _searchBar.placeholder=@"qazwsx"; // //bookmark按钮是否显示 // _searchBar.showsBookmarkButton=YES; // //取消按钮是否显示 // _searchBar.showsCancelButton=YES; // //搜索结果按钮显示 // _searchBar.showsSearchResultsButton=YES; // //bar的颜色(具有渐变效果) _searchBar.tintColor=[UIColor redColor]; _searchBar.barTintColor=[UIColor whiteColor]; _searchBar.searchBarStyle=UISearchBarStyleMinimal; //是否透明 _searchBar.translucent=NO; // Scope的内容 _searchBar.scopeButtonTitles=@[@"English",@"China"]; //默认选择的Scope索引 _searchBar.selectedScopeButtonIndex=; // 是否显示Scope _searchBar.showsScopeBar=YES; UIView *v=[[UIView alloc]initWithFrame:CGRectMake(, , self.view.bounds.size.width, )]; v.backgroundColor=[UIColor yellowColor]; //设置辅助输入视图 _searchBar.inputAccessoryView=nil; // 键盘样式 _searchBar.keyboardType=UIKeyboardTypeDefault; // 返回按钮样式 _searchBar.returnKeyType=UIReturnKeyDone; self.tableView.tableHeaderView=_searchBar; self.tableView.tableFooterView=[[UIView alloc]initWithFrame:CGRectZero]; //还有一些设置背景图片的一些属性方法 详见api // self.navigationItem.titleView=searchbar; self.edgesForExtendedLayout = UIRectEdgeNone; self.modalPresentationCapturesStatusBarAppearance = NO; } - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { self.refreshControl=[[UIRefreshControl alloc]init]; self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"啦啦啦啦儿童节"]; [self.refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged]; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // [_searchBar resignFirstResponder]; NSLog(@"%@", self.tableView.tableHeaderView.subviews); } -(void)refresh { _pageIndex++; NSLog("); sleep(); [self.refreshControl endRefreshing]; [self.tableView reloadData]; } //代理UISearchBarDelegate //开始编辑 - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar { return YES; } // 将要结束编辑 - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { NSLog(@"searchBarTextDidBeginEditing"); } //是否可以结束编辑 - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar { return YES; } // 文本内容编辑结束 - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { // [searchBar resignFirstResponder]; NSLog(@"searchBarTextDidEndEditing"); } //文本内容改变 - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { NSLog(@"textDidChange"); NSLog(@"%@",searchText); ) { [searchBar resignFirstResponder]; _searchData=[_allData copy]; [self.tableView reloadData]; } } //文本改变之前是否可以改变 - (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { return YES; } //查询按钮点击 - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { [searchBar resignFirstResponder]; NSPredicate *predicate=[NSPredicate predicateWithFormat:@"SELF CONTAINS %@",searchBar.text]; _searchData=[[_allData filteredArrayUsingPredicate:predicate] copy]; [self.tableView reloadData]; } //书签按钮点击 - (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar { NSLog(@"searchBarBookmarkButtonClicked"); } //取消按钮点击 - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { [searchBar resignFirstResponder]; } // 搜索结果按钮点击 - (void)searchBarResultsListButtonClicked:(UISearchBar *)searchBar { NSLog(@"searchBarResultsListButtonClicked"); } //Scope选择索引改变 - (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope { NSLog(@"%ld",selectedScope); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } // UIView默认的layoutMargins的值为 {8, 8, 8, 8}.在我们改变View的layoutMargins这个属性时,会触发- (void)layoutMarginsDidChange这个方法。我们在自己的View里面可以重写这个方法来捕获layoutMargins的变化。在大多数情况下,我们可以在这个方法里触发drawing和layout的Update。preservesSuperviewLayoutMargins这个属性默认是NO。如果把它设为YES,layoutMargins会根据屏幕中相关View的布局而改变。 #ifdef __IPHONE_8_0 if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } if([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]){ [cell setPreservesSuperviewLayoutMargins:NO]; } #endif } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return _pageIndex; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _searchData.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *identifier=@"identifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (cell==nil) { cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; } cell.textLabel.text=[NSString stringWithFormat:@"%@",[_searchData objectAtIndex:indexPath.row] ]; return cell; } // Override to support conditional editing of the table view. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the specified item to be editable. return YES; } // Override to support editing the table view. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view } } // Override to support rearranging the table view. - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { } // Override to support conditional rearranging of the table view. - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the item to be re-orderable. return YES; } -(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *v=[[UIView alloc]initWithFrame:CGRectMake(, , self.view.bounds.size.width, )]; v.backgroundColor=[UIColor yellowColor]; return v; } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { ; } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end
UIKit 框架之UISearchBar、UITableViewController的更多相关文章
- UIKit框架使用总结--看看你掌握了多少
一.经常使用的,基本就是每次项目迭代都需要使用的 UIView.UILabel.UIImage.UIColor.UIFont.UIImageView.UITextField.UIButton. UIS ...
- iOS学习32之UIKit框架-可视化编程-XIB
1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...
- iOS开发UIKit框架-可视化编程-XIB
1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...
- iOS-学习UIKIt框架的重要性
前言: 众所周知,我们的移动设备的屏幕上可以展示很多图形界面,作为用户的我们可以通过屏幕上的图形界面浏览信息,也可以通过与图形界面的简单交互,在移动设备上实现各种各样的功能操作.....可以说,没 ...
- Swift - 重写UIKit框架类的init初始化方法(以UITabBarController为例)
原来写了篇文章讲UITabBarController的用法,当时是从UIViewController跳转到UITabBarController页面,代码如下: 1 self.presentViewCo ...
- UIKit框架
在今后的应用程序构建中,会陆续使用各式各样的控件,因此UIKit框架的引入是必不可少的! 一.简介 UIKitk框架提供一系列的Class(类)来建立和管理iPhone OS应用程序的用户界面接口.应 ...
- 基础框架Fundation和UIkit框架的定义和使用
Foundation 框架为所有应用程序提供基本的系统服务 您的应用程序以及 UIKit 和其他框架,都建立在 Foundation 框架的基础结构之上.Foundation 框架提供许多基本的对象类 ...
- iOS开发概述UIkit动力学,讲述UIKit的Dynamic特性,UIkit动力学是UIkit框架中模拟真实世界的一些特性。
转发:http://my.oschina.net/u/1378445/blog/335014 iOS UIKit动力学 Dynamics UIAttachmentBehavior 实现iMessage ...
- 79、iOS 的Cocoa框架、Foundation框架以及UIKit框架
Cocoa框架是iOS应用程序的基础 1. Cocoa是什么? Cocoa是 OS X和ios 操作系统的程序的运行环境. 是什么因素使一个程序成为Cocoa程序呢?不是编程语言,因为在Cocoa开发 ...
随机推荐
- Cocos2d-三维拾取Ray-AABB碰撞检测算法【转】
1.三维拾取技术 在3D游戏中通常会有这样的需求,用户可以选取3D世界中的某些物体进行如拖拽等操作,这时便需要程序通过将二维屏幕上的点坐标转换为三维世界中的坐标,并进行比对,这个过程就需要用到三维拾取 ...
- AbpZero之企业微信---登录(拓展第三方auth授权登录)---第二步:开始逐步实现企业微信登录
上回分解到AbpZero的auth登录机制,这里我们开始着手逐步实现我们的auth登录. 我们新建一个类库XXXX.Web.Authentication.External 在类库下新建一个类QYWec ...
- SQL Server 维护计划(数据库备份)
公司的项目都需要定期备份,程序备份关掉iis站点复制文件就可以了,难受的地方就是数据库的备份了.服务器上装的大都是英文版,一看见英文,操作都变得小心翼翼起来,生怕哪里搞错,第二天就要被安排写辞职申请了 ...
- RabbitMQ基础入门篇
下载安装 Erlang RabbitMQ 启动RabbitMQ管理平台插件 DOS下进入到安装目录\sbin,执行以下命令 rabbitmq-plugins enable rabbitmq_manag ...
- GSS1 - Can you answer these queries I(线段树)
前言 线段树菜鸡报告,stO ZCDHJ Orz,GSS基本上都切完了. Solution 考虑一下用线段树维护一段区间左边连续的Max,右边的连续Max,中间的连续Max还有总和,发现这些东西可以相 ...
- 使用PhpSpreadsheet将Excel导入到MySQL数据库
本文以导入学生成绩表为例,给大家讲解使用PhpSpreadsheet将Excel导入的MySQL数据库. 准备 首先我们需要准备一张MySQL表,表名t_student,表结构如下: CREATE T ...
- [As3.0] 获取本机信息
package { import flash.display.Sprite; import flash.events.Event; import flash.net.NetworkInfo; impo ...
- 这几天bug多,自我检讨一下
这段时间(主要指4月底到5月初)写的bug超过以往总和,觉得很有必要停一下,找找原因.所谓前车之鉴后车之师,不能也不应该在同一地方跌倒N次吧: 为什么bug频出? 深究原因,并不是代码量大.功能多,反 ...
- JAVA并发编程学习笔记------多线程调优
1. 多线程场景下尽量使用并发容器代替同步容器 (如ConcurrentHashMap代替同步且基于散列的Map, 遍历操作为主要操作的情况下用CopyOnWriteArrayList代替同步的Lis ...
- Python小白学习之路(九)—【字符串格式化】【百分号方式】【format方式】
写在前面: 最近的事情好像有很多.李咏的离去,让我觉得很突然,仿佛印象中就是主持节目的他,看着他和哈文的爱情,很是感动.离去,没有什么抱怨,只是遗憾. 总会感慨,时光的流逝. 好像真的很快,转眼间,我 ...