UISearchDisplayController的见解

 其实使用uisearchBar和tableView的搭配也可以达到类似的效果,不过貌似需要更多的设置

这里讲解一下UISearchDisplayController的使用  

首先可以看到UISearchDisplayController并非是viewController而是继承NSobject  其中整合了uisearchBar来实现搜索   tableView负责数据展示

 - (UISearchDisplayController *)searchDisController{

    if (!_searchDisController) {
        
        _searchDisController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
        _searchDisController.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        _searchDisController.delegate = self;
        [_searchDisController setSearchResultsDataSource:self];
        [_searchDisController setSearchResultsDelegate:self];
    }
    return _searchDisController;
}

使用属性声明一个UISearchDisplayController  在此声明中需要一个uisearchBar  其次就是设置代理 其中包括tableView和自身的   代理方法看名称就能想到作用  代理方法会自动的执行tableView的reload方法    ios6和ios7又有点不一致    其中ios6_searchDisController.searchResultsTableView reload时可以执行  然而ios7却不能执行 


ios7默认的0,0位置是从最左上角的状态栏开始的,而ios6是状态栏下开始的   如果有导航栏的话则是从导航栏开始   不过可以通过一个属性edgesForExtendedLayout可以设置成一样

  if (IOS7_OR_LATER) {
        
        self.searchDisController.displaysSearchBarInNavigationBar = YES;
       [self.searchDisController.searchResultsTableView setFrame:CGRectMake(0, 64, kDeviceWidth, kDeviceHeight - 64)];
    }else
    {
        [self.view addSubview:self.searchBar];
        [self.searchDisController.searchResultsTableView setFrame:CGRectMake(0,0, kDeviceWidth, kDeviceHeight)];
    }

ios7将搜索框放在导航栏上  ios6则加载导航栏下方   如果是直接加载导航栏上的话  进入全屏搜索的话取消按钮就出不来

设置searchDisController的Activev可以设置searchDisController的searchResultTableView显示  当点击searchBar是就会进入全名搜索模式


此时可以在uisearchBar的代理和uisearchDisplayerController的代理方法中进行响应的操作   如searchBar显示出取消按钮登操作  具体看情况而定


在实现tableView的代理时要注意如果tableView不止一个时需要在代理方法中判断一下

if(tableView == self.searchDisplyerController.searchReultTabeView)

 执行响应的操作


大概就是这个样子了  具体的实现也得看具体是需求了   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值