使用 tabBar 从应用程序中的 navBar 推送视图
Push view from navBar in app with tabBar
我正在尝试制作一个既有 UITabBar
(作为根视图控制器)又有 UINavigationBar
的应用程序,它们在整个应用程序中始终存在。我的问题是我试图从导航栏中推送 viewcontroller,但我不知道如何操作。我知道我需要 UINavigationBar
成为我试图从中推送的视图控制器的 NavigationController
,但我不知道该怎么做。
在 appDelegate 中:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let tabBar = window!.rootViewController
let navBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: window!.frame.width, height: 64))
let navBarItem = UINavigationItem(title: "Title")
navBar.items = [navBarItem]
tabBar?.view.addSubview(navBar)
return true
}
在 ViewController 我试图从
推送新的 VC
override func viewDidLoad() {
super.viewDidLoad()
let navBar = self.parentViewController?.view.subviews[2] as! UINavigationBar
let navBarItem = navBar.items[0] as! UINavigationItem
navBarItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "pushCreateVC:")
}
func pushCreateVC(sender: UIBarButtonItem) {
println("push")
let navBar = self.parentViewController?.view.subviews[2] as! UINavigationBar
let navBarItem = navBar.items[0] as! UINavigationItem //left over code to reference the navBar from this method
let createVC = CreateViewController()
self.navigationController?.pushViewController(createVC, animated: true) // This is where I want the navBar to push createVC so it still have the navBar at the top with a back button
}
如果你想做你在问题中提到的事情,你应该创建一个带有导航控制器的 TabbarController
// First you need to create a nav controller with viewcontroller in it
var vc = UIViewController()
var navController = UINavigationController(rootViewController: vc)
var tbController = UITabBarController()
//you can add more tab with more navControllers or viewcontrollers
tbController.setViewControllers([navController], animated: true)
//present the tbController as the main viewcontroller
我正在尝试制作一个既有 UITabBar
(作为根视图控制器)又有 UINavigationBar
的应用程序,它们在整个应用程序中始终存在。我的问题是我试图从导航栏中推送 viewcontroller,但我不知道如何操作。我知道我需要 UINavigationBar
成为我试图从中推送的视图控制器的 NavigationController
,但我不知道该怎么做。
在 appDelegate 中:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let tabBar = window!.rootViewController
let navBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: window!.frame.width, height: 64))
let navBarItem = UINavigationItem(title: "Title")
navBar.items = [navBarItem]
tabBar?.view.addSubview(navBar)
return true
}
在 ViewController 我试图从
推送新的 VCoverride func viewDidLoad() {
super.viewDidLoad()
let navBar = self.parentViewController?.view.subviews[2] as! UINavigationBar
let navBarItem = navBar.items[0] as! UINavigationItem
navBarItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "pushCreateVC:")
}
func pushCreateVC(sender: UIBarButtonItem) {
println("push")
let navBar = self.parentViewController?.view.subviews[2] as! UINavigationBar
let navBarItem = navBar.items[0] as! UINavigationItem //left over code to reference the navBar from this method
let createVC = CreateViewController()
self.navigationController?.pushViewController(createVC, animated: true) // This is where I want the navBar to push createVC so it still have the navBar at the top with a back button
}
如果你想做你在问题中提到的事情,你应该创建一个带有导航控制器的 TabbarController
// First you need to create a nav controller with viewcontroller in it
var vc = UIViewController()
var navController = UINavigationController(rootViewController: vc)
var tbController = UITabBarController()
//you can add more tab with more navControllers or viewcontrollers
tbController.setViewControllers([navController], animated: true)
//present the tbController as the main viewcontroller