gpt4 book ai didi

iphone - 在选择 UISearchDisplayController 后保持 UINavigationController 的导航栏隐藏

转载 作者:行者123 更新时间:2023-12-03 18:22:47 25 4
gpt4 key购买 nike

我有一个UISearchDisplayController设置 UITableViewController它嵌套在 UINavigationController 内。当选择一个单元格时,UITableView's didSelectRowAtIndexPath方法被触发,它将新 View 推送到父导航 Controller 。这个新 View 应该在入口处隐藏导航栏。

[[self navigationController] setNavigationBarHidden:YES animated:NO];

我在 didSelectRowAtIndexPath 中使用了这一行隐藏导航栏的方法。当不使用搜索 Controller 选择一行时,此功能可以正常工作,但在选择搜索结果时会被覆盖。看来UISearchDisplayController在选择行后的某个时间将其置于右侧取消隐藏导航栏。

如果我移动setNavigationBarHidden调用目标 View 的viewWillAppear方法、结果相似。我可以通过将 hide 调用放入 viewDidAppear 来使其工作。 ,但这会产生非常的过渡效果,让人感觉跳跃且不合时宜。我想让导航栏在新 View 滑到屏幕上之前就已经隐藏了。

有谁知道导航栏的取消隐藏发生在哪里,和/或我可以通过什么方式覆盖此行为?

最佳答案

这可能不是最优雅的解决方案,但我相信它完全符合您的要求。我遇到了类似的问题,我的解决方案是有一个隐藏导航栏的方法,在延迟 0 秒后调用该方法,如下所示。

调用的方法是:

-(void) hideNavBar {
if (self.navigationController.navigationBar.hidden == NO)
{
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
}

然后在 viewDidLoad 方法中,我有以下内容:

[self performSelector:@selector(hideNavBar) withObject:nil afterDelay:0.0];

这可以工作并立即删除导航栏。如果您想要动画或在延迟后将其删除,您可以修改延迟时间。我尝试了 [self hideNavBar] 但这根本不起作用,所以坚持我上面的内容。

希望这有帮助,如果有人有更优雅的解决方案,我很感兴趣!

关于iphone - 在选择 UISearchDisplayController 后保持 UINavigationController 的导航栏隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340399/

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