【问题标题】:Creating a navigation controller that doesn't show up on startup创建一个在启动时不显示的导航控制器
【发布时间】:2011-10-06 19:07:54
【问题描述】:

我想做这个简单的事情:创建一个 uinavigationcontroller,但它不会在启动时出现。假设我想要一个带有“Go”按钮的欢迎屏幕,该按钮通向 uinavigationcontroller。在我看到的所有示例中,navigationcontroller 似乎立即出现。我该怎么做呢?

谢谢!

【问题讨论】:

    标签: iphone objective-c xcode uiviewcontroller uinavigationcontroller


    【解决方案1】:

    如果“显示”是指使用没有可见足迹的导航控制器,那很容易。只需在根视图控制器中执行此操作:

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

    对于子视图控制器,您需要执行类似的操作才能在它们出现时显示导航栏。

    // Child
    - (void)viewWillAppear:(BOOL)animated
    {
        [self.navigationController setNavigationBarHidden:NO animated:animated];
    }
    

    对于具有主菜单且您不想在主菜单视图中显示导航栏的应用来说,这是一种非常常见的技术。

    【讨论】:

      【解决方案2】:

      显示导航控制器视图的机制发生在应用程序委托中的-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 方法中。在那里,NC 被添加为窗口的 rootViewController。
      如果您想显示另一个,只需将您的自定义视图控制器设置在 NC 的位置,然后在按下按钮时调用的操作方法中切换两个视图控制器(将第一个自定义视图控制器替换为 NC)。 假设 myCustomController 定义了一个名为 UIButton 的属性 touchButton :

      // in the app delegate
      -(BOOL)application:(UIApplication *)application
          didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          //self.window.rootViewController = self.navigationController;
          [self.myCustomController.touchButton addTarget:self
                                                  action:@selector(switchVC)
                                        forControlEvents:UIControlEventTouchUpInside];
          self.window.rootViewController = self.myCustomController;
          [self.window makeKeyAndVisible];
          return YES;
      }
      

      现在在您的应用委托中编写一个操作方法:

      -(void)switchVC {
          self.window.rootViewController = self.navigationController;
      }
      

      【讨论】:

      • 我想过,但是还有很多其他与 uinavigationcontroller 相关的配置,我担心这样做可能会破坏一切,但我会试一试。谢谢!
      【解决方案3】:

      在显示的视图控制器中隐藏导航栏和其他显示导航栏

      [self.navigationController setNavigationBarHidden:YES];
      

      希望这会有所帮助

      【讨论】:

      • 谢谢,但我的意思是完全隐藏整个导航窗口。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      相关资源
      最近更新 更多