【问题标题】:Hiding the UINavigationController on the first .xib file only仅在第一个 .xib 文件上隐藏 UINavigationController
【发布时间】:2012-06-04 17:44:13
【问题描述】:

这可能是一个愚蠢的问题,但我以编程方式将 UINavigationController 添加到我的应用程序中。如果可能的话,我只想将它添加到我所有窗口的顶部,除了第一个 .xib。甚至可能只是将其隐藏在我的第一个 .xib 中。有可能做到这一点吗?我想到了我的第一个 .xib 文件,它像封面页一样向我的应用程序的其余部分打开,我宁愿那个蓝色条不显示在顶部。我希望我能给你看照片,但还没有足够的代表。谢谢!

以下是我认为可以帮助我为应用程序的每个页面提供后栏的代码:

#import "McCormick_TaylorViewController.h"

@implementation McCormick_TaylorAppDelegate

@synthesize window = _window;
@synthesize viewController = _viewController;

- (void)dealloc
{
    [_window release];
    [_viewController release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    
  (NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]   
    autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[McCormick_TaylorViewController alloc] 
    initWithNibName:@"McCormick_TaylorViewController" bundle:nil] autorelease];
    UINavigationController * navController = [[UINavigationController alloc]  
    initWithRootViewController:self.viewController];
    self.window.rootViewController = navController;
    [self.window makeKeyAndVisible];

    return YES;
}

【问题讨论】:

    标签: iphone macos xcode4.2


    【解决方案1】:

    在 McCormick_TaylorViewController 的 viewWillApper: 方法中

    只需使用下面的代码...

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

    在导航栏中的其他视图控制器中显示,然后在另一个视图控制器的 viewWillAppear 中使用下面的代码..

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

    【讨论】:

    • 我只有 1 个视图控制器。其余的是子类。那样可以么?我应该将您的第二段代码添加到我的 .m 文件中的 viewDidLoad 吗?
    • 是的,如果你想在导航栏加载时隐藏一次,你可以使用
    • 但请参阅,隐藏导航栏使用第一个代码,可见导航栏使用第二个代码... :)
    • 好的,它起作用了,但唯一的问题是,当我在另一个页面上点击返回按钮后它又回来了,哈哈。有没有办法让第一页永远不会显示那个蓝条?顺便感谢您的帮助!
    • 嘿伙计....对于你的这个要求,我告诉你在 viewWillAppear 方法中使用这个代码,然后当你的这个 firstview apper 导航栏隐藏时...... :)
    【解决方案2】:

    使用这个方法:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    
    (NSDictionary *)launchOptions
     {
     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]   
     autorelease];
     // Override point for customization after application launch.
     self.viewController = [[[McCormick_TaylorViewController alloc] 
     initWithNibName:@"McCormick_TaylorViewController" bundle:nil] autorelease];
      UINavigationController * navController = [[UINavigationController alloc]  
     initWithRootViewController:self.viewController];
     [navController.navigationBar setHiden:YES]; // hides navigation bar
     self.window.rootViewController = navController;
     [self.window makeKeyAndVisible];
     return YES;
    }
    

    【讨论】:

    • 使用此方法会占用其余页面上的整个导航栏。我没有办法回来。有没有办法只在第一页隐藏?
    • 在另一个你想要导航栏的视图中,在 ViewDidLoad 中添加这个:方法 [self.navigationController setNavigationBarHidden:NO animated:NO];
    猜你喜欢
    • 1970-01-01
    • 2012-01-17
    • 2013-09-18
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2017-06-14
    • 2014-03-10
    • 1970-01-01
    相关资源
    最近更新 更多