UISearchDisplayController “No Results“和 cancel按...

我与影子孤独终老i 提交于 2020-04-17 04:26:06

【推荐阅读】微服务还能火多久?>>>

通过 查看UISearchDispalyController的delegate方法以及它本身属性

了解到他的一些方法,而通过测试,No Results字符的更改放到

- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView;方法中更为好一些,我看到有朋友放到shouldreload方法中的 不过第一次还是会显示NO Results 所以效果不好,但是我测试,delegate方法shouldreload方法是发生在willShowSearchResultsTableView之前的,但是为什么更改默认的ResultsTableView的resultlable属性,shouldreload第一次不会改变,第二次执行shouldreload的时候就会显示“无结果”。

但是如果你是在willShowSearchResultsTableView方法中更改的话,第一次就会显示效果。

一下是我写的  更改方法

- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView

{

    for (UIView *subview in tableView.subviews) {

        if ([subview isKindOfClass:[UILabel class]]) {

            [(UILabel *)subview setText:@"无结果"];

        }

    }

}

关于cancel的更改,本来是想在

viewDidLoad中加载可是,那样的话初始的searchbar就会存在那个cancel  button 视觉效果不好,所以我改在

- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller中添加。

以下是更改代码

- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller

{

    controller.searchBar.showsCancelButton = YES;

    for(UIView *subView in controller.searchBar.subviews)

    {

        if([subView isKindOfClass:[UIButton class]])

        {

            [(UIButton*)subView setTitle:@"取消" forState:UIControlStateNormal];

        }

    }

}


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!