如何隐藏导航栏,而不会失去滑动function

我有一个UITableView,它有一个导航栏(从UINavigationViewController获得),它可以通过用手指滑回去。

我试图隐藏导航栏,但保持滑动function,代码:

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

这成功地隐藏了导航栏,但是,我不能再滑回到最后一个屏幕。

有什么办法可以隐藏导航栏,但保持滑动的能力?

如果你使用的话,用Swift 2testing@ gabbler的解决scheme

 self.navigationController?.navigationBar.hidden = true 

Swift 3.0

 self.navigationController?.navigationBar.isHidden = true 

代替

 self.navigationController?.navigationBarHidden = true 

滑回手势就像一个魅力!

find解决办法:

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // hide nav bar [[self navigationController] setNavigationBarHidden:YES animated:YES]; // enable slide-back if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = YES; self.navigationController.interactivePopGestureRecognizer.delegate = self; } } - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { return YES; } 

在.h文件中,符合UIGestureRecognizerDelegate

使用

 self.navigationController.navigationBar.hidden = YES; 

或者在viewWillAppear中添加这一行:

 self.navigationController.interactivePopGestureRecognizer.delegate = self; 

看来交互效果不佳,添加这一行,并使视图控制器符合UIGestureRecognizerDelegate协议将使其工作。

确保包括:

 self.navigationController.navigationBar.hidden = YES; 

和:

 self.navigationController.interactivePopGestureRecognizer.delegate = self; 

和:

 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = YES; } 

它应该是这样的:

 - (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; self.navigationController.interactivePopGestureRecognizer.delegate = self; if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = YES; } } - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { return YES; } 

对于Xamarinforms我是奋斗与此,所以首先不NavigationRenderer你会得到NavigationController null而不是使用PageRenderer:

 [assembly: Xamarin.Forms.ExportRenderer(typeof(ContentPage), typeof(ContentPageRenderer))] namespace sample { class ContentPageRenderer : PageRenderer { public override void ViewWillAppear(bool animated) { base.ViewDidAppear(animated); var navctrl = this.ViewController.NavigationController; navctrl.InteractivePopGestureRecognizer.Delegate = new UIGestureRecognizerDelegate(); navctrl.InteractivePopGestureRecognizer.Enabled = true; } } } 

如果隐藏导航栏没有帮助,请尝试更改导航栏的矩形并查看?

navBarBgFrame.origin.y = – navBarBgFrame.size.height;