0

我試圖通過編程方式使用下面的代碼創建一個自定義選項卡欄,將它放置在屏幕頂部。但問題是,我無法在tabbar頂部獲得導航欄以返回到前一個屏幕。 請幫助我。Ios Swift:在自定義Tabbar中顯示導航欄

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    let SrnBrdVar = UIStoryboard(name: "Main", bundle: nil) 
    let TabBarCtrVar = UITabBarController() 
    let TabBarVar = TabBarCtrVar.tabBar 
    let ObxSrnVar = SrnBrdVar.instantiateViewControllerWithIdentifier("ObxSrnUid") 
    let ObxNavSrnVar = UINavigationController(rootViewController: ObxSrnVar) 
    let IbxSrnVar = SrnBrdVar.instantiateViewControllerWithIdentifier("IbxSrnUid") 
    let IbxNavSrnVar = UINavigationController(rootViewController: IbxSrnVar) 

    UIApplication.sharedApplication().delegate!.window?!.rootViewController = TabBarCtrVar 

    ObxSrnVar.tabBarItem = UITabBarItem(
     title: "Outbox", 
     image: UIImage(named: "NamItmDftImj"), 
     selectedImage: UIImage(named: "NamItmSltImj")?.imageWithRenderingMode(.AlwaysOriginal)) 
    IbxSrnVar.tabBarItem = UITabBarItem(
     title: "Inbox", 
     image: UIImage(named: "NamItmDftImj"), 
     selectedImage: UIImage(named: "NamItmSltImj")?.imageWithRenderingMode(.AlwaysOriginal)) 

    TabBarCtrVar.viewControllers = [ObxSrnVar,IbxSrnVar] 

    TabBarVar.tintColor = UIColor.greenColor() 
    TabBarVar.frame = CGRectMake(
     0, 
     UIApplication.sharedApplication().statusBarFrame.size.height + 64, 
     UIScreen.mainScreen().bounds.width, 
     50) 
} 
+0

您是否試圖以編程方式創建TabBar控制器,然後添加到它的導航欄(編程方式以及)? – nadi9

+0

我需要所有的Childview控制器(收件箱和發件箱)從Parent Custom tabbar(abv)視圖控制器繼承導航欄。 –

回答

1

這對我有效。希望它對你也有用

let myStoryBoard = UIStoryboard(name: "Main", bundle: nil) 

    let myTabBarController = UITabBarController() 

    let leftController = myStoryBoard.instantiateViewControllerWithIdentifier("left") 

    let leftNavController = UINavigationController(rootViewController: leftController) 

    let rightController = myStoryBoard.instantiateViewControllerWithIdentifier("right") 

    let rightNavController = UINavigationController(rootViewController: rightController) 

    UIApplication.sharedApplication().delegate!.window?!.rootViewController = myTabBarController 

    myTabBarController.addChildViewController(leftNavController) 
    myTabBarController.addChildViewController(rightNavController) 



    let leftChild = myStoryBoard.instantiateViewControllerWithIdentifier("leftChild") 
    let rightChild = myStoryBoard.instantiateViewControllerWithIdentifier("rightChild") 


    leftNavController.addChildViewController(leftChild) 
    rightNavController.addChildViewController(rightChild) 

    print(myTabBarController.viewControllers?.count) 
    let but1 = myTabBarController.viewControllers?[0].tabBarItem 
    but1!.title = "Left Page" 
    let but2 = myTabBarController.viewControllers?[1].tabBarItem 
     but2!.title = "Right Page" 


    leftNavController.childViewControllers[0].navigationItem.title = "Left View" 
    rightNavController.childViewControllers[0].navigationItem.title = "Right View" 
0

下面的代碼爲我工作得到導航欄。但我無法添加返回按鈕,並使其移動到前一個屏幕。 任何人都可以幫助我。

let SrnBrdVar = UIStoryboard(name: "Main", bundle: nil) 
    let TabBarCtrVar = UITabBarController() 
    let TabBarVar = TabBarCtrVar.tabBar 
    UIApplication.sharedApplication().delegate!.window?!.rootViewController = TabBarCtrVar 

    let Tab1SrnVar = SrnBrdVar.instantiateViewControllerWithIdentifier("Tab1SrnXid") 
    let Tab2SrnVar = SrnBrdVar.instantiateViewControllerWithIdentifier("Tab2SrnXid") 

    let Tab1NavCtrVar = UINavigationController(rootViewController: Tab1SrnVar) 
    let Tab2NavCtrVar = UINavigationController(rootViewController: Tab2SrnVar) 

    Tab1NavCtrVar.childViewControllers[0].navigationItem.title = "Nam1TabSrn" 
    Tab2NavCtrVar.childViewControllers[0].navigationItem.title = "Nam2TabSrn" 

    Tab1NavCtrVar.tabBarItem = UITabBarItem(
     title: "Nam1Tab", 
     image: UIImage(named: "NamItmDftImj"), 
     selectedImage: UIImage(named: "NamItmSltImj")?.imageWithRenderingMode(.AlwaysOriginal)) 
    Tab2NavCtrVar.tabBarItem = UITabBarItem(
     title: "Nam2Tab", 
     image: UIImage(named: "NamItmDftImj"), 
     selectedImage: UIImage(named: "NamItmSltImj")?.imageWithRenderingMode(.AlwaysOriginal)) 

    TabBarCtrVar.viewControllers = [Tab1NavCtrVar,Tab2NavCtrVar] 

    TabBarVar.tintColor = UIColor.greenColor() 
    TabBarVar.frame = CGRectMake(
     0, 
     UIApplication.sharedApplication().statusBarFrame.size.height + 40, 
     UIScreen.mainScreen().bounds.width, 
     50)