【问题标题】:navigation bar is hidden when i return back to view in iOS当我返回到 iOS 中查看时,导航栏被隐藏
【发布时间】:2014-07-03 18:54:32
【问题描述】:

我是 iPhone 开发的新手。我使用 storyboard 创建了一个使用 导航栏 的应用程序。我的问题是我在按钮单击时以编程方式从 viewA 打开一个 viewB 并且它成功。现在回到 viewA 我使用了取消按钮。当我单击取消按钮(上一个)时,(viewA)打开但导航栏未显示。和 viewA 有导航栏控制,但 viewB 没有。

提前致谢

查看A

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    EditViewController *viewController = (EditViewController *)[storyboard instantiateViewControllerWithIdentifier:@"EditViewController"];

    [self presentViewController:viewController animated:NO completion:NULL];

视图 B:

- (IBAction)cancelButtonPressed:(id)sender {
    if ( lables != NULL) {

        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        ScannerViewController *viewController = (ScannerViewController *)[storyboard instantiateViewControllerWithIdentifier:@"ScannerViewController"];

        [self presentViewController:viewController animated:NO completion:NULL];

    }
    else{

        [self.navigationController popViewControllerAnimated:YES];
    }

【问题讨论】:

  • 你如何显示和关闭viewB?如果您需要帮助,请分享您的代码。
  • 从viewA你是在展示还是推送viewB?

标签: iphone ios uinavigationcontroller


【解决方案1】:

您正在展示 viewB 并使用 self.navigationController 弹出它,您应该使用一种方式,使用 presentviewcontroller 和 dismissviewcontroller。

[self dismissViewControllerAnimated:YES completion:nil];

对于您的场景,最好使用UINavigationController

例如

推送:

[self.navigationController pushViewController:viewController animated:YES];

结束

[self.navigationController popViewControllerAnimated:YES];

【讨论】:

    【解决方案2】:

    您必须使用导航控制器,在 StoryBoard 中选择视图 A,编辑器菜单 > 嵌入 > 导航控制器。

    http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html

    【讨论】:

      【解决方案3】:

      如果您使用情节提要,则无需以编程方式呈现 viewController。按住 ctrl,从viewCA 拖动到viewCB 并从弹出菜单中选择型号。

      用于解散viewController

      [self dismissViewControllerAnimated:YES completion:nil];
      

      如果您想向 viewCB 发送任何数据,请提供 segue 标识符(例如“segid”)

      - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
      {
          if([[segue identifier] isEqualToString:@"segid"])
          {
              //write your code here.
          }
      }
      

      此方法将在呈现(推送)viewController 时自动调用(delegate)。

      【讨论】:

      • 谢谢,但我以编程方式将按钮添加到导航栏。在导航栏按钮上单击我打开 viewB。
      • 然后还将按钮添加到故事板中的导航栏。拖放导航栏中的按钮。按住 ctrl + 从按钮拖放到 viewCB。按照上面的方法。如果您想为该按钮创建 ibAction 并将其与按钮链接。
      【解决方案4】:

      我也遇到了同样的问题。解决方案是永远不要在单击后退按钮时选择模态,因为模态覆盖了您的整个视图,这就是为什么在后屏幕上没有显示导航控制器的原因。所以不要连接返回按钮,只需编写返回按钮的代码。

      [self dismissViewControllerAnimated:YES completion:nil];
      

      【讨论】:

        【解决方案5】:

        当你需要时(例如 viewDidAppear 方法)使用,

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

        【讨论】:

        • 我为特定的 viewController 使用情节提要
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多