经过 查看UISearchDispalyController的delegate方法以及它自己属性 测试
了解到他的一些方法,而经过测试,No Results字符的更改放到 spa
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView;方法中更为好一些,我看到有朋友放到shouldreload方法中的 不过第一次仍是会显示NO Results 因此效果很差,可是我测试,delegate方法shouldreload方法是发生在willShowSearchResultsTableView以前的,可是为何更改默认的ResultsTableView的resultlable属性,shouldreload第一次不会改变,第二次执行shouldreload的时候就会显示“无结果”。 orm
可是若是你是在willShowSearchResultsTableView方法中更改的话,第一次就会显示效果。 it
一下是我写的 更改方法 table
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView class
{ 方法
for (UIView *subview in tableView.subviews) { tab
if ([subview isKindOfClass:[UILabel class]]) { view
[(UILabel *)subview setText:@"无结果"]; vi
}
}
}
关于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];
}
}
}