在基于标签栏的应用程序上添加导航栏

Posted

技术标签:

【中文标题】在基于标签栏的应用程序上添加导航栏【英文标题】:Adding Navigation Bar on Tab-Bar Based App 【发布时间】:2015-12-04 09:53:21 【问题描述】:

我有一个基于标签栏的应用程序,我想在应用程序顶部添加导航栏。请注意,我正在使用一个名为 PageMenu 的库,它在 1 个父 ViewController 中创建 2 个 TableView。

我尝试的是,添加一个新的 ViewController 和 Editor->Embed in Navigation Bar。放在Tab Bar Controller之前,ctrl+拖动到Tab Bar Controller设置根视图的关系。最后将导航栏控制器设置为初始视图控制器。但这失败了:

(顶部变得非常奇怪,模糊,PageMenu 的子标题消失了。也许是在那个模糊的东西下面,因为我仍然可以在 2 个表格视图之间滑动。

其次,我尝试删除导航控制器,并手动将导航栏添加到视图控制器。这适用于表视图和视图控制器,但不适用于 PageMenu。当我在 PageMenu Controller 上尝试时,它没有显示任何导航栏。

请注意,在 Demo 中,他们使用 Navigation Bar 作为 Parent 和 sub-TableViews,他们用这个以及 Storyboard > Navigation Controller 实现了 Navigation Bar:

override func viewDidLoad() 
    super.viewDidLoad()

    self.title = "HEADER"
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
    self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
  

最后,我尝试了..

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    let nav1 = UINavigationController()
    let first = ViewController(nibName: nil, bundle: nil)
    nav1.viewControllers = [first]

    let second = SecondViewController(nibName: "SecondViewController", bundle: nil)
    let nav2 = UINavigationController()
    nav2.viewControllers = [second]

    let tabs = UITabBarController()
    tabs.viewControllers = [nav1, nav2]

    self.window!.rootViewController = tabs;
    self.window?.makeKeyAndVisible();

    return true

但我得到的结果是:

我想要实现的(但使用 TabBarController;NavBar 仅用于标题):

我现在拥有的是这个。我只想像上面的 PageMenu 示例一样在其顶部添加 NavigationBar


更新: 最后,我也尝试过:

但同样的问题:

【问题讨论】:

简而言之,你想要PageMenuUITabBarController吗? 我编辑了问题。请检查以下。我想要的就像 instagram。标题、页面菜单和标签栏。我的 tabBar 和 PageMenu 工作正常,我只是无法添加 NavigationBar 【参考方案1】:

您还可以创建类似的故事板来帮助解决您的问题。

在这里,我可以创建示例代码,您不希望单行代码更改,而是仅更改为情节提要。

Download source code from here.

【讨论】:

我尝试了您的解决方案。导航栏 > 选项卡栏 > 导航栏 > 视图。但我又收到了那个模糊的东西。 i.stack.imgur.com/sDZsP.png @senty 如果您对我的回答满意,请接受我的回答。【参考方案2】:

不添加编辑器->在标签栏控制器之前嵌入导航栏中 在从 Tab Bar 控制器连接的 View 控制器之前添加 Editor->Embed in Navigation Bar。

因为它适用于特定的 Tab Vise,所以我们必须在视图控制器之前添加 Editor->Embed in Navigation Bar

【讨论】:

所以我应该让 Tab Bar 扩展到 4x NavController & 每个 NavController 到每个 View。?喜欢TabBarController-> 1) NavBar -> View1 -> TableView1+2 , 2) NavBar -> View2 -> TableView3+4 , 3) NavBar -> View3 , 4) NavBar->View4 我尝试了同样的问题。我将它添加到问题的底部 确定查看控制器模拟矩阵 Topbar 是否为 None?如果没有,则选择红外线 如何检查? :s 如果我理解正确,所有视图中的所有内容都是推断的 developer.apple.com/library/ios/recipes/…查看此链接

以上是关于在基于标签栏的应用程序上添加导航栏的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone 中基于导航的应用程序中添加标签栏

在基于窗口的应用程序 iPhone 中添加标签栏和导航栏

具有标签栏和导航栏的 iPhone 应用程序

从带有搜索栏的表格单元格创建模式视图时,无法在导航栏中创建后退按钮

如何将 UIImageView 添加到导航栏的右侧?

导航不起作用