2014-02-06 5 views
1

해결 : 사용자가에서/가입 로그인 한UINavigationController가 흐름

되면 ... 메인 스토리 보드에 나는 다음과 같은 한

UIWindow* window = [[UIApplication sharedApplication] keyWindow]; 

window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateInitialViewController]; 

을 전환하려면 다음 코드를 사용 UINavigationController 흐름은 tabbarcontroller가 viewcontroller의 루트 인 uinavigationcontroller로 이동 한 후 로그인을 처리합니다. 사용자가 로그인 화면에서 로그인하지 않도록 사용자가 이미 로그인 한

enter image description here

실행 "이 SEGUE는 작품". 그건 완벽하게 작동합니다. 내가 만나는 문제는 사용자가 로그인해야하는 경우입니다 ... 로그인/가입 화면에서 로그인 화면까지의 연결이 완벽하게 작동하지만 로그인 화면에서 탭바로 이동하면 다음과 같은 현상이 발생합니다 :

enter image description here

내 viewcontroller.m에 다음 코드를 가지고 있기 때문에이 정말 발생하지 않아야은

- (void)viewDidLoad { 
    ... 
    self.navigationItem.title = @"Messages"; 
    self.navigationItem.hidesBackButton = YES; 

    NSLog(@"gotten to here"); 
    ... 
} 

이 사람이 왜 이런 일을 알고 있나요 (여기에받은이라고합니다)?

답변

5

나는 일반 응용 프로그램의 흐름에서 분리 된 내 로그인 흐름을 유지하는 것을 좋아합니다. 이것은 내가 응용 프로그램에 로그인 화면에서 SEGUE를 연결하지 않지만, 내가 처리 할 것을 의미 내 AppDelegate에에서 :

- (void)presentMainInterface 
{ 
    self.window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateInitialViewController]; 
} 

다른 : 첫 번째 방법은이 작업을 수행

if ([MyUserHandler sharedHelper].isAuthenticated) { 
    [self presentMainInterface]; 
} else { 
    [self presentWelcomeInterface]; 
} 

로그인 화면을 표시합니다.

이렇게하면 로그인 화면은 사용자가 인증되지 않은 경우에만로드됩니다.

+0

그리고 사용자가 로그인 할 때 기본 인터페이스를 어떻게 인스턴스화합니까? self.window.rootViewController = [[UIStoryboard storyboardWithName : @ "메인"번들 : [NSBundle mainBundle]] instantiateInitialViewController]; – Apollo

+0

일단 사용자가 로그인하면 나는 단지 같은 메소드 인 presentMainInterface를 호출합니다. 메인 인터페이스를 보여주는 윈도우의 rootviewcontroller를 바꿀 것입니다. – andreamazz

0

UITabBarControler의 사용자 지정 클래스 (하위 클래스)를 만들고 해당 Storyboard의 tabbarcontroller에 대한 사용자 지정 클래스를 할당합니다. 그런 다음 사용자 정의 tabbarcontroller의 viewDidLoad 귀하의 코드를 추가

self.navigationItem.hidesBackButton = YES; 

잘 작동합니다.

enter image description here

+1

스 와이프 동작도 해제해야합니다. self.navigationController.interactivePopGestureRecognizer.enabled = NO; – andreamazz

+0

이것이 작동하지 않습니다 – Apollo

+0

그러면 다른 문제 일 수 있습니다. 나는 게시하기 전에 이것을 데모에서 테스트했다. 잘 작동한다. – Vaisakh

관련 문제