gpt4 book ai didi

ios - 如何防止 UISearchController 显示导航栏?

转载 作者:行者123 更新时间:2023-11-29 11:33:27 25 4
gpt4 key购买 nike

我的用例有点奇怪。我正在使用自己的导航栏,所以我用

隐藏了默认导航栏
[self.navigationController setNavigationBarHidden:YES animated:NO];

viewWillAppear 上。

一切正常,但如果我在主动搜索时打开键盘,然后返回到之前的 UIViewController,则 native 导航栏再次出现,我最终得到2 个导航栏(我自己的和默认的)。

这就是我在 viewDidLoad 中设置我的 UISearchController 的方式:

- (void)viewDidLoad {
[super viewDidLoad];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.obscuresBackgroundDuringPresentation = NO;
self.searchController.searchBar.delegate = self;
[self.searchController.searchBar sizeToFit];
self.definesPresentationContext = YES;
self.searchController.hidesNavigationBarDuringPresentation = YES;
self.searchController.searchBar.searchBarStyle = UISearchBarStyleMinimal;
}

我已经尝试删除 self.definesPresentationContext = YES;(或将其设置为 NO),但这会产生一个不同的问题,即当我返回到之前的 UIViewController 搜索栏位于其他所有内容之上!直到我点击取消。我还尝试在 viewWillDissappear 上以编程方式调用取消按钮,但这也不起作用...

所以我已经没有选择了,这就是我来这里的原因。

有什么想法吗?

最佳答案

使用非标准的导航栏可能不是最好的主意。 (我知道客户有时会很固执,但我们应该告诉他们,有时标准解决方案有很多优点,例如维护成本低,这会降低他们的账单)。

话虽如此,作为最后的手段,我可​​能会建议您采用一种非常“强大”的方法。您可以使用自定义类对 UINavigationController 进行子类化,并且在此类中您可以像这样覆盖 setNavigationBarHidden 方法

- (void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated{
[super setNavigationBarHidden:YES animated:NO];
}

方法。这应该使栏一直隐藏。不过,我不太支持这种解决方案,但它可能适用于您的情况。

关于ios - 如何防止 UISearchController 显示导航栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51333298/

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