2012-07-26 15 views
5

Używam storyboardów po raz pierwszy w mojej aplikacji na iOS. Mam 2 widoki w mojej Storyboard (A & B). Powiedzmy, że A jest moim początkowym kontrolerem widoku w moim scenorysie. Kiedy moja aplikacja zadziałała, widzę kontroler widoku A. Jak dotąd wszystko działa zgodnie z oczekiwaniami. Teraz w moim widoku kontrolera A sprawdzam, czy użytkownik jest zalogowany, czy nie. Jeśli użytkownik nie jest zalogowany, chcę przedstawić kontroler widoku B. Jak mogę programowo wyświetlać B używając PresentModalViewController?PresentModalViewController w Storyboard programowo iOS 5

Oto mój zestaw się

enter image description here

Oto mój kod

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    if (!isUserLoggedIn) { 
     NSLog(@"USER NOT LOGGED IN...."); 
     UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
     LoginViewController *vc = (LoginViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"B"]; 
     [self presentModalViewController:vc animated:YES]; 
    } 


} 

Wszelkiego rodzaju pomoc jest mile widziana. Dzięki

Odpowiedz

10

To, co zrobiłeś do tej pory wydaje się być poprawne. Czy pamiętałeś o ustawieniu identyfikatora B w scenorysie?

Również może chcesz spróbować

[self.storyboard instantiateViewControllerWithIdentifier:@"B"]; 

zamiast tego, co robisz.

Aktualizacja:

Oto co metoda viewDidLoad może wyglądać następująco:

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    if (!isUserLoggedIn) { 

     NSLog(@"User is not logged in."); 

     LoginViewController *vc = (LoginViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"B"]; 
     [self presentModalViewController:vc animated:YES]; 

    } 

} 

Również widzę od obrazu, który swój pierwszy kontroler widoku nie jest ustawiony do żadnej konkretnej klasy. Mówi po prostu "View Controller", podczas gdy drugi pokazuje poprawnie "Login View Controller".

Uwaga: Nie mam teraz dostępu do Xcode, więc jeszcze go nie testowałem.

+0

Identyfikator jest poprawnie ustawiony scenorys. Gdzie powinienem napisać powyżej linii i co powinienem usunąć z mojego kodu? – iOSAppDev

+0

@iOSAppDev: Ok. Wypróbuj kod, który wysłałem teraz. Jeśli to nie zadziała, jest coś, co jest złe/brakuje. Upewnij się również, że te linie kodu faktycznie są wykonywane. Możesz także dodać instrukcję 'NSLog' w' viewDidLoad' kontrolera widoku, który chcesz pokazać (LoginViewController), aby upewnić się, że jest załadowany. – matsr

Powiązane problemy