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开发 ...
随机推荐
- 批处理系列(13) -从视频导出高质量GIF图片
需要ffmpeg,配置ffmpeg到环境变量. 保存代码到HQGIF.bat,与视频同目录,管理员权限运行CMDcd到此目标目录: HQGIF.bat input_video_name.mp4 out ...
- 《Python绝技:运用Python成为顶级黑客》 用Python实现免杀
1.免杀的过程: 使用Metasploit生成C语言风格的一些shellcode作为载荷,这里使用Windows bindshell,功能为选定一个TCP端口与cmd.exe进程绑定在一起,方便攻击者 ...
- java中关键字static和final
面向对象的不足 凡是有利必有弊,强对象编程,使得语法简单统一,但也有其缺点,而且有很多.我们在接下来的课程里会一点点接触到.我们今天先看第一个. 有些变量和函数确实没必要定义在一个类里.强行规定这些函 ...
- js处理想要得到数据结构
例1 var arr = [ { date: "2018-01-10", time: "11:00" }, { date: "2018-01-10&q ...
- HDU 6198(2017 ACM/ICPC Asia Regional Shenyang Online)
思路:找规律发现这个数是斐波那契第2*k+3项-1,数据较大矩阵快速幂搞定. 快速幂入门第一题QAQ #include <stdio.h> #include <stdlib.h& ...
- Aizu 2249Road Construction 单源最短路变形《挑战程序设计竞赛》模板题
King Mercer is the king of ACM kingdom. There are one capital and some cities in his kingdom. Amazin ...
- Flask从入门到精通之重定向和用户会话
最新版的hello.py 存在一个可用性问题.用户输入名字后提交表单,然后点击浏览器的刷新按钮,会看到一个莫名其妙的警告,要求在再次提交表单之前进行确认.之所以出现这种情况,是因为刷新页面时浏览器会重 ...
- 经典MVC框架技术-struts2基础知识
Struts2框架简介 struts2框架是在struts1和webwork技术的基础上,进行合并的全新框架,struts2以Webwork为核心,采用拦截器来处理用户的请求,这样的设计使得业务逻辑控 ...
- Java Maven项目的一些补充
写在前面 在多人开发团队中,规范是非常重要的.To explain it,就像是秦始皇统一货币.度量衡一样,主要的目的是为了降低项目技术架构差异所带来的交流成本,这样开发者就可以尽可能把注意力放在业务 ...
- python3 内置函数详解
内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小. >>> abs(-25) 25 >&g ...