1

ユーザーはログインしてviewNumOneに着陸し、名前と住所を記入してviewNumTwoとviewNumThreeを取得します。彼らは今ログアウトします。彼らがログインし直すと、彼らはviewColorBlueに直進して欲しいです(これは私が問題を抱えているところです)。Swift:TabBarとナビゲーションコントローラを使用して1つのビューから別のビューにプログラムで切り替える

(ログイン画面) ログインフィールドを持つView Controller。

( - タブバー[0]最初のタブ):彼らはTabBarにあるrootVCに行くと、彼らはviewNumOneある最初のタブに着陸に一度ログインし

(ルート) TabBarの(これは正常に動作します) viewNumNavController> viewNumOne(名前/アドレス情報フィールドはここにある)> viewNumTwo> viewNumThree

(2番目のタブは - タブバー[1]) viewColorNavController> viewColorRed> viewColorBlue> viewColorWhiteここで

(ログアウトボタンはこちら)私が試みたコードしかしそれはcra shes:

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

let tabBarController = mainStoryboard.instantiateInitialViewController() as! UITabBarController 
tabBarController.selectedIndex = 1 

let viewColorNaviCon = tabBarController.viewControllers![1] as! UINavigtionController 
let viewColorBlueVC = viewColorNaviCon.topViewController as! ViewColorBlueController 
self.presentViewController(viewColorBlueVC, animated: true, completion: nil) 

答えて

1

これを理解するのに20時間かかりましたので、これで他の誰かがその時間を節約できます。あなたがする必要があるのは、TabBarのナビゲーションコントローラーのルートビューコントローラーをリセットすることです。

これが最初の手順です。ユーザーが名前と住所を記入したviewNumOneに着陸したとします。彼らが名前と住所を正しく記入していると仮定すると、ログアウトしてログインしていれば、再びこの場面を見る必要はありません。 vcの新しいシーンを表示するには、最初にvcを変更したいタブバーのナビゲーションコントローラを設定する必要があります。

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let tabBarController = mainStoryboard.instantiateViewControllerWithIdentifier("MainTabBarController" 
tabBarController.selectedIndex = 1 
let viewNumNavController = tabBarController.viewControllers![1] as! ViewNumNavigationController 

これは第2ステップです。ユーザーに見せたい新しいView Controllerの配列を作成する必要があります。

//Array of view controllers you want to set as the Navigation Controller's new array of VC's 
let viewColorRedVC = mainStoryboard.instantiateViewControllerWithIdentifier("ViewColorRedController") as! ViewColorRedController 
let viewColorBlueVC = mainStoryboard.instantiateViewControllerWithIdentifier("ViewColorBlueController") as! ViewColorBlueController 
let viewColorWhiteVC = mainStoryboard.instantiateViewControllerWithIdentifier("ViewColorWhiteController") as! ViewColorWhiteController 
let newArrayOfVCs = [viewColorRedVC, viewColorBlueVC, viewColorWhiteVC] 

最後に、上記の配列を使用してタブバーのルートビューコントローラーを変更します。

//This method is what sets the Navigation Controller's new child views to be presented 
viewNumNavController.setViewControllers(newArrayOfVCs, animated: false) 
//This method is what sets the exact view controller you want use as the actual root vc (the very first scene the user will see) 
viewNumNavController.popToViewController(viewColorRedVC, animated: true) 
self.presentViewController(tabBarController, animated: true, completion: nil) 

これが役に立ちます。

関連する問題