我有一个UISearchDisplayController
设置与UITableViewController
它嵌套在一个UINavigationController
。当选择一个单元格时,UITableView's
didSelectRowAtIndexPath
方法被触发,它将新视图推送到父导航控制器。这个新视图应该在入口处隐藏导航栏。
[[self navigationController] setNavigationBarHidden:YES animated:NO];
我在中使用这条线didSelectRowAtIndexPath
隐藏导航栏的方法。当不使用搜索控制器选择一行时,此功能可以正常工作,但在选择搜索结果时会被覆盖。看来UISearchDisplayController
在选择行后的某个时间将其置于右侧取消隐藏导航栏。
如果我移动setNavigationBarHidden
调用目标视图的viewWillAppear
方法、结果相似。我可以通过将 hide 调用放入来使其工作viewDidAppear
,但这使得very尴尬的过渡效果让人感觉跳跃和不合适。我想在新视图滑到屏幕上之前使导航栏已经隐藏。
有谁知道导航栏的取消隐藏发生在哪里,和/或我可以通过什么方式覆盖此行为?
这可能不是最优雅的解决方案,但我相信它完全符合您的要求。我遇到了类似的问题,我的解决方案是有一个隐藏导航栏的方法,在延迟 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] 但这根本不起作用,所以坚持我上面的内容。
希望这有帮助,如果有人有更优雅的解决方案,我很感兴趣!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)