iOS 5故事板与登录覆盖(iOS 5.1; Xcode 4.3.3)?

Gup*_*R4c 2 xcode storyboard ios xcode4 ios5

我正在尝试创建一个iOS(特定于iPhone)的应用程序,用户必须在访问应用程序的其余部分之前进行身份验证.我正在使用Storyboard作为主要应用程序,看起来像这样(分成不同的行):

(1)        -> NavigationController
(2)  -(o-o)-> OfficesViewController
(3)   -[<-]-> OfficeViewController
Run Code Online (Sandbox Code Playgroud)

我还有一个单独的XIB文件ScanOverlayViewController,OfficeViewController当用户按下按钮时,该文件以编程方式被推送.不确定将Storyboard和XIB混合在一起是否合适,但它到目前为止一直在工作.

无论如何,回到主题,我想把一个身份验证屏幕放在前面NavigaitonController,但我不知道如何.

我尝试在Storyboard中放置一个未链接的视图并将其设置为初始视图.然后我放了一个隐藏的按钮,然后做了一个segue NavigationController.在代码中,我尝试让控制器执行segue,但即使视图已正确显示,也不会实际执行seque.

然后,我尝试将身份验证视图设置为自己独立的XIB,并在应用程序委托中初始化控制器,并将其视图设置为应用程序委托的子视图.这只是导致应用程序直接进入OfficesViewController视图,好像我没有做任何事情.

是否有一种特定的方式来正确执行此操作,以便它与Storyboard一起使用?

提前致谢!

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;
}
Run Code Online (Sandbox Code Playgroud)

控制器确实已经分配并初始化,但它没有显示出来.

hyp*_*ypt 5

NavigaitonController作为初始视图控制器,然后模态呈现认证屏幕如果需要的话.你可以这样做-application:didFinishLaunchingWithOptions:.

混合XIB文件和故事板很好,无论如何,故事板变成了XIB(或nib)文件,它们只是有一些额外的元数据.混合搭配是有道理的.

例如:

- (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;
}
Run Code Online (Sandbox Code Playgroud)