首页 > 代码库 > 在UISearchDisplayController里定义取消按钮和去掉No Result

在UISearchDisplayController里定义取消按钮和去掉No Result

- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller

{

    searchDisplayController.searchBar.backgroundColor = [UIColor whiteColor];

    searchDisplayController.searchBar.showsCancelButton = YES;

    //定义取消按钮

    /*

     *ios7ios6方法不同

     */

    if (IOS7_OR_LATER) {

        for (id searchbutton in mySearchBar.subviews)

        {

            UIView *view = (UIView *)searchbutton;

            UIButton *cancelButton = (UIButton *)[view.subviews objectAtIndex:2];

            cancelButton.enabled = YES;

            [cancelButton setTitle:@"取消"  forState:UIControlStateNormal];//文字

            break;

        }

    }else

    {

        for(id cancelButton in [searchDisplayController.searchBar subviews])

        {

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

            {

                UIButton *btn = (UIButton *)cancelButton;

                [btn setTitle:@"取消"  forState:UIControlStateNormal];

            }

        }

    }

}

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString

{

    //去除 No Results 标签

    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW0.001);

    dispatch_after(popTime, dispatch_get_main_queue(), ^{

        for (UIView *subview insearchDisplayController.searchResultsTableView.subviews) {

            if ([subview isKindOfClass:[UILabel class]] && [[(UILabel *)subview textisEqualToString:@"No Results"]) {

                UILabel *label = (UILabel *)subview;

                label.text = @"无结果";

                break;

            }

        }

    });

    return YES;

}