2012-07-26 87 views
5

我在iOS應用程序中第一次使用storyboard。我在故事板中有2個視圖(A & B)。假設A是我故事板中的初始視圖控制器。當我的應用程序啓動時,我可以看到視圖控制器A.到目前爲止,evrything正在按照預期工作。現在在我的視圖控制器A中,我正在檢查用戶是否已登錄。如果用戶沒有登錄,那麼我想呈現視圖控制器B.如何以編程方式顯示B以模態方式使用PresentModalViewController?以Storyboard的形式呈現PresentModalViewController以編程方式iOS 5

這是我設立

enter image description here

這裏是我的代碼

- (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]; 
    } 


} 

任何形式的幫助表示讚賞。謝謝

回答

10

你迄今爲止所做的事似乎是正確的..你是否記得在故事板中設置B的標識符?

此外,你可能想嘗試的,而不是你在做什麼

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

更新:

這裏的viewDidLoad方法可能是什麼樣子:

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    if (!isUserLoggedIn) { 

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

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

    } 

} 

另外,我從你的第一個視圖控制器沒有設置任何特定類別的圖像看到。它只是說「視圖控制器」,而第二個正確顯示「登錄視圖控制器」。

注意:我現在無法訪問Xcode,所以我還沒有測試過它。

+0

標識符正確設置了故事板。我應該在哪裏寫上面的代碼?我應該從代碼中刪除什麼? – iOSAppDev 2012-07-26 11:14:06

+0

@iOSAppDev:好的。試試我現在發佈的代碼。如果這不起作用,還有其他的東西是錯誤的/缺失的。另外,確保這些代碼行實際上被執行。您還可以在要顯示的視圖控制器(LoginViewController)的「viewDidLoad」中添加一個'NSLog'語句,以確保它已加載。 – matsr 2012-07-26 14:47:14