如何用UISearchBar替换导航栏?

问题描述 投票:0回答:1

一旦显示并返回,我想用搜索栏替换导航栏。

OR

如果导航栏始终放在主视图控制器的内容上[[over,我会没事的。


设置

这样的搜索控制器:_searchController = [[UISearchController alloc] initWithSearchResultsController:[[MySearchViewController alloc] init]]; _searchController.delegate = self; _searchController.obscuresBackgroundDuringPresentation = TRUE; _searchController.hidesNavigationBarDuringPresentation = TRUE; _searchController.searchBar.placeholder = @"Search..."; _searchController.searchBar.delegate = self;

显示

这样的搜索控制器:- (void)searchButtonTapped:(id)sender { self.navigationItem.searchController = _searchController; [self.navigationController.view setNeedsLayout]; [self.navigationController.view layoutIfNeeded]; [self.navigationItem.searchController.searchBar becomeFirstResponder]; }

隐藏

这样的搜索控制器:- (void)willDismissSearchController:(UISearchController*)searchController { self.navigationItem.searchController = nil; [self.navigationController.view setNeedsLayout]; }
我知道searchController.hidesNavigationBarDuringPresentation属性与我想要的属性非常接近,但完全相同。因为导航栏仅在我进入搜索栏后才隐藏,但是我希望在

present

搜索栏时已经隐藏。当我按下导航栏中的搜索图标按钮时,应将其替换为搜索控制器,并且只有搜索栏在顶部可见。有人知道如何实现这一目标吗?


我已经尝试过:

    [当我用[self.navigationController setNavigationBarHidden:YES animated:NO];显示搜索控制器时隐藏导航栏
  • 控制搜索栏高度限制并根据可见性进行更改
  • 将搜索控制器设置为navigationItem.titleView->这不是我想要的
  • 根据可见性隐藏搜索控制器->导航栏保持相同的高度,仅隐藏搜索控制器
  • 使用self.definesPresentationContext,但这似乎与我需要的设置不同
  • 看了一下self.definesPresentationContext,但这并不适用,因为我不使用表视图控制器
ios uinavigationbar uisearchbar uisearchcontroller
1个回答
0
投票
我可以优先选择

一旦显示并返回,我想用搜索栏替换导航栏。

工作。

当显示UISearchBar时,我使用了导航项的

显示和隐藏 左右蝙蝠按钮项的方法。

如果有更简单的方法可以达到相同目的,我会感兴趣吗?

self.navigationItem.hidesSearchBarWhenScrolling

© www.soinside.com 2019 - 2024. All rights reserved.