2017-03-17 92 views
4

这个问题有点令人困惑,所以希望图像会更有帮助。这里的设置:使用Tab Bar Controller时,按钮是否可以打开到特定的选项卡?

enter image description here

所以,我想首先查看按钮打开FirstViewController,我想第二个视图按钮打开SecondViewController。如果我链接第二个视图按钮将SecondViewController这样的:

enter image description here

我失去的标签导航。如果我的按钮连接到TabViewController这样的:

enter image description here

然后它会自动打开到FirstViewController。除非我错过了一些东西,否则似乎需要使用一些额外的代码才能完成,但似乎找不到解释如何执行此操作的任何内容。

谢谢!

回答

1

使用标识符创建从ViewcontrollerTabBarController的storyboard segue。然后分配TabBarController的selelctedIndexprepareforsegue方法

storyboard

@IBAction func firstBtnAction(_ sender: Any) { 
    (sender as! UIButton).tag = 0 
    performSegue(withIdentifier: "tabBar", sender: sender) 
} 
@IBAction func secBtnAction(_ sender: Any) { 
    (sender as! UIButton).tag = 1 
    performSegue(withIdentifier: "tabBar", sender: sender) 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "tabBar" { 
     if let vc = segue.destination as? UITabBarController { 
      vc.selectedIndex = (sender as! UIButton).tag 
     } 
    } 
} 
+0

Na砸了它。谢谢 –

0

在tabViewController您需要实现以下功能..

var index : Int! 

@IBAction func button1(_ sender: Any) { 
     index = 1 
     self.performSegue(withIdentifier: "TabBarSegue", sender: self) 
} 

@IBAction func button2(_ sender: Any) { 
     index = 2 
     self.performSegue(withIdentifier: "TabBarSegue", sender: self) 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

     if(segue.identifier == "TabBarSegue"){ 
      let videoController : TabBarController = segue.destination as! TabBarController 
      videoController.index = index 
} 

然后,你需要实现TabBarController并实施以下..

import UIKit 

class TabBarController: UITabBarController { 

    var index : Int! 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     selectedIndex = index 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

} 
相关问题