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=1;

    //初始化数据

    _allData=@[@"abcd11",@"abcd12",@"abcd13",@"abcd14"];

    _searchData=[_allData copy];

    //初始化UISearchBar

    _searchBar=[[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 44)];

    //样式

    _searchBar.barStyle=UISearchBarStyleDefault;

    //代理

    _searchBar.delegate=self;

    //文本内容

    _searchBar.text=@"abcd";

    //提示文字

    _searchBar.prompt=@"1234";

//    //文本为空时显示内容

//    _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=1;

    // 是否显示Scope

    _searchBar.showsScopeBar=YES;

    UIView *v=[[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];

    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(@"1234");

    sleep(4);

    

    [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);

    if (searchText.length==0) {

        [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(0, 0, self.view.bounds.size.width, 44)];

    v.backgroundColor=[UIColor yellowColor];

    return v;

    

}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

{

    return 44;

}

/*

#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、UITableViewControllerUIKit 框架之UISearchBar、UITableViewControllerUIKit 框架之UISearchBar、UITableViewControllerUIKit 框架之UISearchBar、UITableViewControllerUIKit 框架之UISearchBar、UITableViewController

你可能感兴趣的:(UITableView)