2017-03-17 10 views
4

質問はちょっと分かりにくいので、画像がもう少し役立つようにしてください。タブバーコントローラを使用しているときにボタンを特定のタブに開くことはできますか?

enter image description here

だから、私は最初のビューボタンをFirstViewController開きたい、と私は2番目のビューボタンがSecondViewControllerを開きたい:ここにセットアップがあります。私はこのようなSecondViewController2番目のビューボタンをリンクした場合:

enter image description here

私はタブナビゲーションを失います。私はこのようなTabViewControllerにボタンを接続した場合と:

enter image description here

それが自動的にFirstViewControllerに開きます。私は何かが欠けていない限り、これは少し余分なコードで行う必要があるようだが、私はこれを行う方法を説明するものを見つけることができないようだ。

ありがとうございました!

答えて

1

ViewcontrollerTabBarControllerのストーリーボードセグを識別子で作成します。そして、その後、あなたはTabBarControllerを実装し、次のように実装する必要があります..あなたは、以下の機能を実装する必要がprepareforsegue方法tabViewControllerで

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

aaそれを焼いた。ありがとうございました –

0

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のselelctedIndex値を割り当てる。..

import UIKit 

class TabBarController: UITabBarController { 

    var index : Int! 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     selectedIndex = index 

    } 

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

} 
関連する問題