UISearchBar和UISearchDisplayController

今天第一次用UISearchBar+UISearchDisplayController感觉非常神奇。以前都是只用searchbar。看到苹果自带的搜索都是有黑色界面如图:


确不知道怎么实现的  今天就用了UISearchBar+UISearchDisplayController实现了这样的效果。

在做demo的时候发现了一些神奇的事情。

1.你完全不用tableview的reloaddata。

2.你只需要写- (void)searchBar:(UISearchBar *)searchBar 
    textDidChange:(NSString *)searchTerm这一个 searchbar的委托。就能完成以前的搜索的功能。

测试出了个问题 还要加上

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{

要resetdata

}

因为tableview的绑定数据源来自同一个delegate,如果不reset,数组会出现问题

3.如果要想挡住navigationbar的话就要是navigationcontroller不能是自己添加的navigationbar,当然tabbarcontroller也对挡住。


我认为UISearchDisplayController中有自己的tableview和在你创建的tableview不是同一个对象。

如果你不想让搜索出的结果(cell)有 点击事件 就在

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath方法中判断tableview是不是你的tableview。

附上搜索的代码

- (void)resetSearch {
    [maLoadData_ removeAllObjects];
	[maLoadData_ addObjectsFromArray:maSource_];
}
- (void)handleSearchForTerm:(NSString *)searchTerm
{
    NSMutableArray *toRemove = [[NSMutableArray alloc] init];
    [self resetSearch];
    
    for (NSString *key in maLoadData_) {
        
        
		if ([key rangeOfString:searchTerm 
						options:NSCaseInsensitiveSearch].location == NSNotFound)
			[toRemove addObject:key];
        
        
        
    }
    [maLoadData_ removeObjectsInArray:toRemove];
    
    //[table reloadData];
}

- (void)searchBar:(UISearchBar *)searchBar 
    textDidChange:(NSString *)searchTerm
{
    if ([searchTerm length] == 0)
    {
        [self resetSearch];
        //[table reloadData];
        return;
    }
    [self handleSearchForTerm:searchTerm];
    
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值