我正在使用UISearchDisplayController在tableview中顯示搜索結果。如果搜索結果是空的,我隱藏了UISearchDisplaycontroller的searchResultTableView。它的工作正常,直到iOS 6.0,但沒有在iOS 7中。 我正在尋找一些解決方案,但不幸的是我還沒有找到它。 我使用下面的語句來隱藏searchResultTableViewUISearchDisplayController searchResultsTableView不隱藏在iOS7中
self.searchDisplayController.searchResultsTableView.hidden = YES;
以下是屏幕截圖中的iOS 6和iOS 7
編輯:
我使用以下UISearchDisplayController委託方法
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar
selectedScopeButtonIndex]]];
return YES;
}
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchScope:(NSInteger)searchOption
{
[self filterContentForSearchText:[self.searchDisplayController.searchBar text]
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:searchOption]];
return YES;
}
-(void)filterContentForSearchText:(NSString *)searchText scope:(NSString *)scope{
[Appdelegate.arrFilteredDrugSummary removeAllObjects];
[Appdelegate.arrFilteredDrugID removeAllObjects];
for (DrugDetails *drug in Appdelegate.arrDrugSummary)
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"(SELF BEGINSWITH [cd] %@)", searchText];
if(![drug.tradeName isEqual:[NSNull null]])
{
[drug.tradeName compare:searchText options:NSCaseInsensitiveSearch];
BOOL resultTradeName;
if((resultTradeName = [predicate evaluateWithObject:drug.tradeName]))
{
if (![Appdelegate.arrFilteredDrugID containsObject:drug.ID])
{
[Appdelegate.arrFilteredDrugSummary addObject:drug];
[Appdelegate.arrFilteredDrugID addObject:drug.ID];
}
}
}
}
if (![Appdelegate.arrFilteredDrugSummary count])
{
[self.btnAddNewDrug setHidden:NO];
self.tblview.hidden=YES;
self.searchDisplayController.searchResultsTableView.hidden = YES;
}
else
{
[self.btnAddNewDrug setHidden:YES];
self.tblview.hidden=NO;
self.searchDisplayController.searchResultsTableView.hidden = NO;
}
[self.searchDisplayController.searchResultsTableView reloadData];
}
你在哪裏調用這行代碼?如果你還沒有把它移到'searchDisplayController:didShowSearchResultsTableView:'你可能想嘗試移動它。順便說一句...我在iOS 7上遇到了很多與UISearchDisplayController有關的問題,我只是將它完全剝離出來,並編寫了執行這項工作所需的自定義代碼,並在沒有它的情況下與UISearchBar進行交互。 – smileyborg
@smileyborg:我編輯了我的問題,並在代碼中添加了隱藏searchResultTableView的代碼。你能否建議我哪裏出錯了。 – Mahesh
@smileyborg:我按照你的建議添加了searchDisplayController:didShowSearchResultsTableView:方法。它解決了問題,但遇到了另一個問題。我沒有獲得「不要看到它?請問我們!」的點擊事件iOS 7中的按鈕。 – Mahesh