zoukankan      html  css  js  c++  java
  • UISerachBar / UISearchDisplayController

    1. UISerachBar 

    继承与UIView, 包含uitextfield, 并且实现了uitextfielddelegate代理的主要内容

    含有取消按钮, 默认不显示

    2. UISerachDisplayController

    包含 uisearchbar, uitableview, uinavigaitionitem 以及 uiviewcontroller

    每一个uiviewcontroller有一个类型为UISerachDisplayController的属性, 但默认为nil

    demo:

    #import <UIKit/UIKit.h>
    
    @interface MainViewController : UITableViewController{
        NSArray *data;
        NSArray *filterData;
        UISearchDisplayController *searchDisplayController;
    }
    
    @end
    #import "MainViewController.h"
    
    @interface MainViewController ()
    
    @end
    
    @implementation MainViewController
    
    - (id)initWithStyle:(UITableViewStyle)style
    {
        self = [super initWithStyle:style];
        if (self) {
            data = [NSArray arrayWithObjects:@"Allan",@"Abbbb",@"Acccc",@"Bccccc",@"Cddddffk",@"Cddkllll",@"Ekkflfl",@"Ekljljfg" ,@"Leslie",@"Mm",@"Meinv",@"Meihi",@"Catilin",@"Arron", nil];
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width
                                                                               , 44)];
        searchBar.placeholder = @"搜索";
        
        // 添加 searchbar 到 headerview
        self.tableView.tableHeaderView = searchBar;
        
        // 用 searchbar 初始化 SearchDisplayController
        // 并把 searchDisplayController 和当前 controller 关联起来
        searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
        
        // searchResultsDataSource 就是 UITableViewDataSource
        searchDisplayController.searchResultsDataSource = self;
        // searchResultsDelegate 就是 UITableViewDelegate
        searchDisplayController.searchResultsDelegate = self;
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
    }
    
    #pragma mark - Table view data source
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 1;
    }
    
    /*
     * 如果原 TableView 和 SearchDisplayController 中的 TableView 的 delete 指向同一个对象
     * 需要在回调中区分出当前是哪个 TableView
     */
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        if (tableView == self.tableView) {
            return data.count;
        }else{
            // 谓词搜索
            NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self contains [cd] %@",searchDisplayController.searchBar.text];
            filterData =  [[NSArray alloc] initWithArray:[data filteredArrayUsingPredicate:predicate]];
            return filterData.count;
        }
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *cellId = @"mycell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
        
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];
        }
        
        if (tableView == self.tableView) {
            cell.textLabel.text = data[indexPath.row];
        }else{
            cell.textLabel.text = filterData[indexPath.row];
        }
        
        return cell;
    }
    
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
        NSString *text;
        
        if (tableView == self.tableView) {
            text = data[indexPath.row];
        }else{
            text = filterData[indexPath.row];
        }
        
        NSLog(@"you click %d   %@",indexPath.row,text);
    }
    
    @end
  • 相关阅读:
    Silverlight:拖动滚动条控制媒体播放
    黑马程序员第一阶段3.面向对象第5天
    黑马程序员第一阶段2.java编程基础第4天
    黑马程序员第一阶段2.java编程基础第2天
    黑马程序员第一阶段2.java编程基础第3天
    黑马程序员第一阶段3.面向对象第6天
    黑马程序员第一阶段3.面向对象第8天
    黑马程序员第一阶段3.面向对象第7天
    黑马程序员第一阶段1.Java开发前奏第1天
    hdu 1133
  • 原文地址:https://www.cnblogs.com/apem/p/4522416.html
Copyright © 2011-2022 走看看