2017-05-19 8 views
1

私は3つのビューを持つメインタブバーコントローラを持っています。Unwind segueでTabbed Viewを切り替えるには

  1. メインビュー
  2. 歴史ビュー
  3. メニュー表示、ユーザーがログオンしている場合は、彼女がいない場合は、それがsegues私のアプリが最初にロード、タブバーコントローラのチェック

ログオンビュー。次のようにIユーザーがログオンがログオンビューからアンワインドセグエを呼び出したら:

self.performSegueWithIdentifier("unwindToTabBarFromSignInView", sender: self) 

これはログアウトボタンで表示されるので、これは私のタブバーコントローラのメニュー表示のアンワインドセグエにユーザーをもたらしますしたがって、最後にユーザーに提示されたビューでした。しかし、ユーザーがログオンすると、メニュービューの代わりにメインビューを表示したいと思います。これを達成するために、Unwind Segueに次のコードがあります。残念ながら、それは効果がないようですが、メインビューの代わりにログオンした後、ユーザーはメニュービューに戻ってきます。

@IBAction func unwindToTabBarFromSignInView(segue: UIStoryboardSegue) { 
     tabBarController?.selectedIndex = 0 
} 
+0

'tabBarController'はnilですか? – Paulw11

+0

いいえ、tabBarControllerはゼロではありません – Jace

答えて

2

それはうまくいかないことが不思議です。しかし、私は簡単な解決策を持っています。

UITabBarControllerに戻すと、すべてのタブのViewControllerは独自のunwindを実装できます。@IBActionを使用して、必要なタブに直接アクセスできます。

@IBAction func unwindToMainViewController(_ segue: UIStoryboardSegue) { 
    print("back in MainViewController") 
} 

出口アイコンにのViewControllerアイコンから-dragging 制御によりアンワインドセグエを作成し、それを識別子"unwindToMain"を与える:あなたのMainViewControllerこれを実装するには

。ユーザーがログオンすると、単純に呼び出す:

self.performSegueWithIdentifier("unwindToMain", sender: self) 

、あなたはあなたのUITabBarControllerのメインタブに戻ります。

+0

ありがとう!もちろん、それは魅力のように働いた!私はタブを切り替えることに非常に固定されていたので、私はそれがいかに簡単か分からなかったとは信じられません。 – Jace