设置使用Storyboard在App Startup上显示的第一个视图控制器

时间:2013-10-20 21:14:13

标签: ios objective-c appdelegate rootview

我正在设置FIrst视图控制器,它将显示在我的App Startup上。它应该首次作为教程出现在UIView中,并且从第二次看起来是另一个标准视图。 在AppDelegate中我写了这个:

#import "AppDelegate.h"
#import "TabBarController.h"
#import "TutorialController.h"

@implementation AppDelegate

@synthesize window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if ([@"1" isEqualToString:[[NSUserDefaults standardUserDefaults] objectForKey:@"Startup"]]) {

        TabBarController * viewControllerStandard = [[TabBarController alloc] init];
        window.rootViewController = viewControllerStandard;

    } else {

        TutorialController * viewControllerFirst = [[TutorialController alloc] init];
        window.rootViewController = viewControllerFirst;
        }

    [window makeKeyAndVisible];

    return YES;
}

它不会返回任何警报,但启动应用程序后,在启动画面后,它只显示黑屏。没有这些代码一切正常。可能有什么不对?谢谢!

编辑:我正在使用Storyboard!

已解决:Solved using followben's reply.

2 个答案:

答案 0 :(得分:1)

您需要初始化视图控制器。例如

#import "AppDelegate.h"
#import "TabBarController.h"
#import "TutorialController.h"

@implementation AppDelegate

@synthesize window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if ([@"1" isEqualToString:[[NSUserDefaults standardUserDefaults] objectForKey:@"Startup"]]) {

        TabBarController *viewControllerStandard = [[TabBarController alloc] init];
        window.rootViewController = viewControllerStandard;
        [viewControllerStandard release]; //for non-arc

    } else { 

        TutorialController * viewControllerFirst = [[TutorialController alloc] init];
        window.rootViewController = viewControllerFirst; 
        [viewControllerFirst release]; //for non-arc

    }

    [window makeKeyAndVisible];

    return YES;
}

答案 1 :(得分:0)

你没有实现viewControllerStandard。除非它是在Interface Builder中构建的,否则你需要这样的东西。

self.viewControllerStandard = [[TabBarController alloc] init];
self.viewControllerFirst = [[TutorialController alloc] init];
[self.viewController setViewControllers:@[self.viewControllerFirst] animated:NO];
window.rootViewController = self.viewControllerStandard;