2012-06-29 77 views
2

我正在嘗試創建一個iOS(iPhone專用)應用程序,用戶在訪問應用程序的其餘部分之前必須進行身份驗證。我使用的是故事板爲主要應用程序,它看起來像這樣(分爲單獨的行):帶登錄疊加層的iOS 5 Storyboard(iOS 5.1; Xcode 4.3.3)?

(1)  -> NavigationController 
(2) -(o-o)-> OfficesViewController 
(3) -[<-]-> OfficeViewController 

我也有叫ScanOverlayViewController一個單獨的XIB文件,其被編程由OfficeViewController推當用戶按下一個按鈕。不知道是否有這樣的故事板和XIB混合是適當的,但它一直工作到目前爲止。

無論如何,回到主題,我想提出一個認證屏幕盈方NavigaitonController的,但我不知道怎麼樣。

我試圖放置在故事板未鏈接的視圖並將其設置爲初始視圖。然後,我放置了一個隱藏的按鈕,並跳到NavigationController。在代碼中,我嘗試讓控制器執行segue,但即使視圖正確顯示,seque實際上也沒有執行。

然後我試圖使認證查看它自己獨立的廈門國際銀行和初始化在應用程序委託控制器並設置其爲應用程序委託的子畫面視圖。這只是導致應用程序直接轉到OfficesViewController視圖,好像我沒有做任何事情。

是否有正確這樣做,因此故事板工作的具體辦法?

在此先感謝!

UPDATE

這裏是我當前的應用程序的委託:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
AuthenticationViewController *authenticationViewController = [[AuthenticationViewController alloc] initWithNibName:@"AuthenticationViewController" bundle:nil]; 

if (authenticationViewController) { 
    NSLog(@"Should have generated %@", authenticationViewController); 
}; 

[[[application keyWindow] rootViewController] presentModalViewController:authenticationViewController animated:YES]; 

    return YES; 
} 

控制器不會得到分配和初始化的,但它只是沒有顯示出來。

回答

5

具有NavigaitonController爲初始視圖控制器,然後模態呈現認證畫面如果需要的話。您可以在-application:didFinishLaunchingWithOptions:中執行此操作。

混合XIB文件和故事是好的,故事都被轉換爲廈門國際銀行(或筆尖)文件,無論如何,他們只是有一些額外的元數據。混合搭配是有道理的。

例如爲:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    if ([self needsAuthentication]) 
    { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      AuthVC *authVC = [[AuthVC alloc] init]; 
      [[UIWindow keyWindow].rootViewController presentModalViewController:authVC animated:YES]; 
     }); 
    } 
    // anything else 
    return YES; 
} 
+0

我恨聽起來這個愚蠢的,但你有你的意思是一個代碼示例?我大致知道你在說什麼,但是我的大腦開始讓我失望......現在我的應用程序:didFinishLaunchingWithOptions:'只返回'YES'(因爲我評論了其他所有內容)。 – Gup3rSuR4c

+0

我已經在上面添加了一個示例... – hypercrypt

+0

我按照您的示例進行了更改,但沒有任何反應。應用程序剛啓動並直接進入'OfficesViewController'。我用我當前版本的應用程序委託更新了我的問題。 – Gup3rSuR4c