【问题标题】:Embedded Navigation Bar not showing at runtime.嵌入式导航栏在运行时不显示。
【发布时间】:2015-12-25 22:20:06
【问题描述】:

我在我的 UiTableViewController 中嵌入了一个导航控制器,希望有一个导航栏。导航栏显示在情节提要中,但在运行时不显示。有没有其他人遇到过这个问题并可以提供解决方案?我已经阅读了许多 Stackoverflow 帖子,但找不到关于这个问题的有效帖子。

【问题讨论】:

  • 你是如何调用/呈现表格视图的?
  • 到目前为止,tableview已经通过storyboard完成了。我没有以编程方式做任何事情。
  • 使用故事板完成就可以了。你的 tableview 是你故事板中唯一的视图吗?
  • 不,我使用的其他视图控制器也遇到了同样的问题。
  • 滚动视图中有 3 个不同的视图。

标签: ios xcode swift uitableview uinavigationcontroller


【解决方案1】:

您必须呈现普通的表格视图而不是导航控制器。您需要做的是让您的 tableview 作为导航控制器的根视图并呈现导航控制器。

 yourTableController *vc = //reference from storyboard
            UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
     //then present the nav instead of tableview.

在 Swift 中:

  var nav: UINavigationController = UINavigationController(rootViewController: vc)
  //then present the nav

或者,如果您希望您的表格视图作为初始视图控制器,则将您的导航控制器(其根视图是您的表格视图)作为情节提要中的初始视图控制器。

【讨论】:

  • 这很快。对不起,我没有这么说,但我会尝试你提到的。谢谢
【解决方案2】:

如果您已经通过 [ Editor --> Embed in --> Navigation Controller ] 添加了导航栏,那么假设您向前添加了 UIBarButtonItem 名称

您选择该项目按钮并将其拖动到另一个视图控制器,它会弹出说明您是否要继续显示等...然后您选择继续显示。

稍后您决定添加另一个 UIBarButtonItem 说之前,然后将此按钮拖回主视图控制器。

在运行时,您现在看到一个空白区域,请尝试以下修复

1st) 确保您已在“Storyboard segue”中的两个 segue 中单击圆圈以到达该区域。

2nd) 删除 segue 而不是导航栏!

3rd) 通过将 segue 拖到控制器来重新创建 segue

问题应该得到解决,如果这个解决方案有帮助,请打勾。

【讨论】:

    【解决方案3】:
    self.navigationController?.isNavigationBarHidden = false
    
    if let _navigationItem = embeddedViewController?.navigationItem {
       self.navigationController?.navigationBar.pushItem(_navigationItem, animated: false)
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多