1

사용자가 로그인하여 viewNumOne에 착륙하면 이름과 주소가 채워지고 viewNumTwo 및 viewNumThree가 표시됩니다. 이제 로그 아웃합니다. 그들이 다시 로그인 할 때 viewColorBlue로 곧바로 이동하기를 원합니다 (이 곳에서 문제가 발생합니다).Swift : TabBar 및 탐색 컨트롤러를 통해 프로그래밍 방식으로 하나의 뷰에서 다른 뷰로 전환

(로그인 화면) 로그인 필드가있는 컨트롤러보기.

(- 한 tabBar [0] 첫 번째 탭) : 그들이 TabBar의 인 rootVC에 가서 그들이 viewNumOne 첫 번째 탭에 착륙에 한 번 로그인

(루트) TabBar의 (이 잘 작동) viewNumNavController> viewNumOne (이름/주소 정보 필드 위치)> viewNumTwo> viewNumThree

(두 번째 탭 - 한 tabBar [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 

이것은 두 번째 단계입니다. 사용자가보기를 원하는 새 뷰 컨트롤러 배열을 만들어야합니다.

//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) 

희망이 있습니다.

관련 문제