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

时间:2015-12-04 09:53:21

标签: ios xcode swift

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

我尝试的是,添加了一个新的ViewController和Editor->嵌入导航栏。将它放在Tab Bar Controller之前,按住Ctrl键并拖动到Tab Bar Controller以设置根视图的关系。最后将Nav Bar Controller设置为初始视图控制器。但是这样就失败了:

enter image description here

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

enter image description here

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

请注意,在Demo中,他们使用导航栏作为Parent和子TableViews,他们使用这个以及Storyboard>实现了导航栏。导航控制器:

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
}

但我得到的结果是:

enter image description here

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

enter image description here

我现在拥有的是这个。我只想在上面添加NavigationBar,就像上面的PageMenu示例

一样

enter image description here

更新 拉斯利,我也尝试过: enter image description here

但同样的问题: enter image description here

2 个答案:

答案 0 :(得分:6)

您还可以创建有助于解决问题的明智故事板。

enter image description here

在这里,我可以创建您想要的示例代码,不需要单行代码更改,只能更改为故事板。

Download source code from here.

答案 1 :(得分:3)

Check this image

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

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