我使用的是笔尖,而不是故事板。无论如何,我正在从一个视图控制器推送到下一个:
[self.navigationController pushViewController:vc animated:YES];
但是在下一个视图控制器" vc"上,我希望隐藏导航栏。但是,我仍然希望能够向左滑动以转到上一个屏幕,并且能够放置一个可以将用户带回来的后退按钮。
但是,当我在下一个视图控制器中执行此操作[self.navigationController setNavigationBarHidden:YES animated:animated];
时,会隐藏导航栏,但您无法再滑动以导航回来。
如何使用此向后滑动功能,并将后退按钮放在屏幕上(只是没有导航栏?)
我试图模仿雅虎新闻摘要的行为 - 请注意它有导航按钮,然后滑动返回,但没有导航栏。此外,向下滚动时,后退按钮会消失。
我已经尝试使导航栏变得半透明,但是条形块会触及,这样用户就无法点击栏下的内容。有任何想法吗?谢谢!
答案 0 :(得分:0)
你可以这样做,只需隐藏你的导航栏
[self.navigationController setNavigationBarHidden:YES animated:animated];
并添加Swipe Gesture以导航回到前一个视图
- (void)viewDidLoad
{
[super viewDidLoad];
//Add Swipe Gesture to navigate back to view
UISwipeGestureRecognizer *backtoview = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeHandler)];
[self.view addGestureRecognizer: backtoview];
}
-(void)swipeHandler{
[self.navigationController popViewControllerAnimated:YES];
}
如果你想要方向,你可以添加滑动手势的方向,如果你想要按钮事件,那么添加自定义按钮并添加相同的方法到按钮动作
这会对你有帮助!
答案 1 :(得分:0)
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationController.navigationBar.alpha = 0;
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
self.navigationController.navigationBar.alpha = 1;
}
答案 2 :(得分:0)
快速
您可以使用以下方法隐藏navigationBar:
listViewScrollController.animateTo(listViewScrollController.position.maxScrollExtent)
启用InteractivePopGestureRecognizer documentation
self.navigationController?.navigationBar.isHidden = true
// or
self.navigationController?.setNavigationBarHidden(true, animated: true)
OR
添加EdgePanGestureRecognizer以识别左挥动,然后返回:
self.navigationController?.interactivePopGestureRecognizer?.delegate = self as! UIGestureRecognizerDelegate
// Enable gesture to pop the top view controller off the navigation stack
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = true
// Make an extension for your View Controller
extension MyViewController: UIGestureRecognizerDelegate {}