2015-01-20 2 views
1

나는 스토리 보드를 가지고 있으며 UITabViewController이라는 기본값을 추가했습니다.이 중 하나는 UIViewControllers입니다.IOS : 로그인 후 루트 컨트롤러 인 Tab Bar Controller

-FirstViewController 
-SecondViewController 

따라서 루트 화살표는 스토리 보드의 탭 표시 줄 컨트롤러를 가리 킵니다.

이제 LoginViewController (탭 모음의 탭이 아님)을 추가했습니다.

사용자가 아직 인증되지 않은 경우 AppDelegate 파일의 didFinishLaunchingWithOptions 메서드에서 응용 프로그램이 첫 번째 탭을 표시합니다. 나는 그것을 올바르게 코딩 했는가?

아래의 코드를보고하십시오 :

//inside didFinishLaunchingWithOptions 
... 
var storyboard = UIStoryboard(name: "Main", bundle: nil); 
var tabController = storyboard.instantiateViewControllerWithIdentifier("TabBar") as UITabBarController; 

if(self.window != nil){ 
    self.window!.rootViewController = tabController; 
} 

갤럭시 탭 바 컨트롤러가 연결된 사용자 정의 클래스하지만 일반적인 일이 없습니다. 올바른 접근 방식을 취 했습니까?

답변

2

스토리 보드를 루트보기 컨트롤러로 수동으로 인스턴스화하는 경우에 적합합니다. 그러나 수동으로 rootViewController를 didFinishLaunchingWithOptions으로 설정하는 것은 큰 전략이 아닙니다. 하나는 수동으로 스토리 보드를로드 한 다음 instantiateViewControllerWithIdentifier이며, 이는 유연하지 못하고 중단 될 수 있습니다. 당신은 사용자가 로그인하지 않은 경우 먼저 로그인 화면을 표시 할 경우

, 시도 :

if (checkUserNotLogedIn()) { 
     //user not logged in   
     var loginViewController = CustomLoginViewController() 
     self.window?.rootViewController?.presentViewController(loginViewController, animated: false, completion: nil) 
    } 

지금 사용자 정의 로그인 컨트롤러는 한 tabBar 위에 앉아있다.

관련 문제