gpt4 book ai didi

ios - 使用搜索栏后隐藏导航栏

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:35 25 4
gpt4 key购买 nike

我已将我的导航栏隐藏在我的 TableView Controller 中,但在选择搜索栏然后使用取消将其关闭后,它再次显示导航栏。我试过了

-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
self.navigationController.navigationBar.hidden = YES;
}

但它没有用,虽然它确实从详细 View 中隐藏了导航栏,但这是不希望的。

在 Storyboard 中,我有一个 tabBarController --> navigationController --> tableView --> detailview。

编辑:

我的代码:

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar
selectedScopeButtonIndex]]];

return YES;
}

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
searchResults = [_truckArray filteredArrayUsingPredicate:resultPredicate];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView == self.searchDisplayController.searchResultsTableView) {
return 1;
} else {
return [_sectionTitles count];
}
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView == self.searchDisplayController.searchResultsTableView) {
if (section == 0) {
[_sectionTitles replaceObjectAtIndex:0 withObject:@""];
[tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
return [searchResults count];
} else {
return 0;
}
} else {
NSString *sectionName = [_sectionTitles objectAtIndex:section];
NSArray *sectionArray = [_sections objectForKey:sectionName];
return [sectionArray count];
}
}

在 cellForRowAtIndexPath 中:

Item *item = nil;
if (tableView == self.searchDisplayController.searchResultsTableView) {
item = [searchResults objectAtIndex:indexPath.row];
} else {
NSString *sectionTitle = [_sectionTitles objectAtIndex:indexPath.section];
NSArray *sectionArray = [_sections objectForKey:sectionTitle];
item = [sectionArray objectAtIndex:indexPath.row];
}

最佳答案

如果当您关闭搜索栏时,请尝试查看您是否再次调用 tableView 的 viewDidAppear 或 viewWillAppear 方法,并在其中调用您的代码以隐藏导航栏。

我确信,当您显示模态视图时,当您关闭 View 时,将调用 viewDidAppear 方法,也许在这里您有相同的行为。

- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:animated];
}

希望对您有所帮助。

快乐编码。

关于ios - 使用搜索栏后隐藏导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30300457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com