2012-06-29 40 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