UITableView 和 SearchBarController 视图 iPhone
Posted
技术标签:
【中文标题】UITableView 和 SearchBarController 视图 iPhone【英文标题】:UITableView and SearchBarController view iPhone 【发布时间】:2012-01-18 14:38:06 【问题描述】:我的表格视图在这个用户界面中:
但是当我开始搜索时,视图会更改为:
我希望当用户开始搜索时,视图应该与我为不同字段使用的标题相同,例如标题应该存在并且搜索的数据应该显示在其位置的相同标题下?
有可能吗?
我正在使用此代码:
在 viewDidLoad 中:
// create a filtered list that will contain products for the search results table.
//filteredListItems = [NSMutableArray arrayWithCapacity:[listItems count]];
filteredListItems = [[NSMutableArray alloc] initWithCapacity:[self.listVehicles count]];
// restore search settings if they were saved in didReceiveMemoryWarning.
if (self.savedSearchTerm)
[self.searchDisplayController setActive:self.searchWasActive];
[self.searchDisplayController.searchBar setSelectedScopeButtonIndex:self.savedScopeButtonIndex];
[self.searchDisplayController.searchBar setText:savedSearchTerm];
self.savedSearchTerm = nil;
[listTable reloadData];
然后是另一种方法:
-(void)viewDidDisappear:(BOOL)动画
self.searchWasActive = [self.searchDisplayController isActive];
self.savedSearchTerm = [self.searchDisplayController.searchBar text];
self.savedScopeButtonIndex = [self.searchDisplayController.searchBar selectedScopeButtonIndex];
在搜索栏方法中:
//search bar implementation
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF contains[cd] %@",
searchText];
self.filteredListItems = [self.listVehicles filteredArrayUsingPredicate:resultPredicate];
- (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;
谢谢
【问题讨论】:
我不明白您要完成什么...请尝试用不同的词再次解释 查看搜索前和搜索后的区别,搜索前您可以看到标题 A、B、C,而搜索后该视图被隐藏并出现简单表格。我只想在搜索时或搜索完成时拥有与标题相同的视图 【参考方案1】:你应该实现 UISearchBar without(!!!) SearchDisplayController。转到您的 xib 文件,如果您在右侧选项卡中搜索“搜索栏”,您将获得 2 个结果。您应该只将搜索栏加入您的项目。
另一种解决方案,只需返回 NO:
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
[self filterContentForSearchText:searchString scope:
[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
return YES;
【讨论】:
我试过你的另一种解决方案,你建议返回NO;但问题依然存在 嘿,Oded Regev!我已经得到了我的问题的答案,你可以在这里查看它,它也可能对你有帮助,@gerry3 给出了很好的答案并用几句话描述了这个问题,查看它---***.com/questions/8922456/…以上是关于UITableView 和 SearchBarController 视图 iPhone的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 和 numberOfRowsInSection 崩溃
核心数据、UITableView 和 UISegmentedControl
UITableView 中的 UITableView,填充了字符串和数组的 JSON 数组 [关闭]