經過 查看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];
}
}
}