带有登录叠加层的 iOS 5 Storyboard(iOS 5.1;Xcode 4.3.3)?

标签 ios xcode ios5 xcode4 storyboard

我正在尝试创建一个 iOS(特定于 iPhone)应用程序,用户必须在访问该应用程序的其余部分之前进行身份验证。我正在为主应用程序使用 Storyboard,如下所示(分成单独的行):

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

我还有一个名为 ScanOverlayViewController 的单独 XIB 文件,当用户按下按钮时,该文件会由 OfficeViewController 以编程方式推送。不确定像这样混合 Storyboard 和 XIB 是否合适,但到目前为止一直有效。

无论如何,回到主题,我想在 NavigaitonController 前面放置一个身份验证屏幕,但我不确定如何操作。

我尝试在 Storyboard中放置一个未链接的 View 并将其设置为初始 View 。然后,我放置了一个隐藏按钮并转到 NavigationController。在代码中,我尝试让 Controller 执行序列,但即使 View 正确显示,序列实际上并未执行。

然后,我尝试使身份验证 View 成为它自己的单独 XIB,并初始化应用程序委托(delegate)中的 Controller 并将其 View 设置为应用程序委托(delegate)的 subview 。这只会导致应用直接进入 OfficesViewController View ,就好像我什么都没做一样。

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

提前致谢!

更新

这是我当前的应用程序委托(delegate):

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

Controller 确实已分配并初始化,但它只是没有显示。

最佳答案

NavigaitonController 作为初始 View Controller ,然后根据需要以模态方式呈现身份验证屏幕。您可以在 -application:didFinishLaunchingWithOptions: 中执行此操作。

混合 XIB 文件和 Storyboard很好, Storyboard无论如何都会变成 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;
}

关于带有登录叠加层的 iOS 5 Storyboard(iOS 5.1;Xcode 4.3.3)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270133/

相关文章:

ios - 我的应用程序在我的 iPhone 上运行时崩溃,但在模拟器中没有。我可以使用哪些调试技术来解决问题?

ios - 重新启动动画 ios swift

ios - 无法从另一个 View Controller 在 WebView 中显示 URL

ios - 将图像异步加载到 UICollectionView?

iphone - iOS 获取已安装的配置文件

objective-c - iOS5 ARC 从后台选择器安排 NSTimers 是否安全?

iphone - iOS 5.1 中的 UINavigationController

ios - NSDictionary,如何存储和读取枚举值?

ios - (Swift) ViewController 的 UI 元素无法通过实现的委托(delegate)方法进行编辑

objective-c - 为什么 Xcode/LLVM 在为 ARM64 编译时优化此方法返回的变量