ios – 带视图控制器的Push / Pop View控制器,不带导航栏

我试图用一个隐藏的导航栏从视图控制器中推出一个视图控制器.

我试过各种各样的组合[[self navigationController] setNavigationBarHidden:YES animated:NO];在viewWillAppear,viewDidAppear,viewWilldisappear …等

// First View Controller

@implementation FirstViewController

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

    NSLog(@"[%@ viewWillAppear]",self);
}

@end


// Second View Controller


@implementation SecondViewController

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[self navigationController] setNavigationBarHidden:NO animated:NO];

    NSLog(@"[%@ viewWillAppear]",self);
}

@end

没有什么工作我也尝试过自定义代码来“动画化”一个推送和弹出,这是有效的,但我失去了边缘滑动和查看平移.在我深入挖掘之前,只想确保我不会重新发明.

星巴克应用程序是我想要模仿的.

应用程序的根视图控制器(深色背景视图)是全屏幕,并注意到它没有UINavigationBar.但是当您点击其中一个按钮时,它会使用UINavigationBar来推送视图控制器(浅色背景视图).从那里,如果您点击“返回”箭头,它将使用导航栏查看控制器.互动式流行滑动手势也可以.

解决方法

有可能没有一起自己解决一个解决办法.这是你做的:

你的root viewController:

@implementation ViewController

....

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:YES animated:animated];
}

@end

并推送viewController:

@implementation SecondViewController

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:NO animated:animated];
}

@end

这样做.它也保持互动过渡的工作;)

然而,我觉得令人不安的是,这种类型的功能根本没有被苹果记录下来. – 您还可以隐藏和显示具有这些“呼叫点”的工具栏(viewWillAppear

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...