我目前有一个启动画面故事板,图像设置为我的加载屏幕。
我过去常常以编程方式完成所有操作,而故事板则让我有所收获。我有一个布尔设置来确定这是否是第一次启动应用程序。如果是这样,我希望有一个视图控制器,我将其设置为导航控制器的根目录。如果它不是第一次启动,我想为我的导航控制器设置一个不同的根视图控制器。
我已点击并将导航控制器拖到我的故事板上。我现在不知道该怎么做。我有一个viewController设置了一个图像,如果它是第一次启动应用程序我想成为第一个看到的图像。但是,我不确定使用故事板自动初始化的内容,因此从概念上讲,我不确定如何设置应用。
由于我必须以编程方式处理此情况,我是否需要在故事板中创建导航控制器,或者这是多余的?
我的父VC(viewController)只是一个标签覆盖在顶部的图像。使用我的appDelegate.h文件中的以下代码构建正确显示我的启动屏幕故事板,但随后淡出为黑屏。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
firstLaunch = YES;
if (firstLaunch == YES) {
ViewController *launchScreen = [ViewController new];
UINavigationController * navControl = [[UINavigationController alloc]initWithRootViewController:launchScreen];
self.window.rootViewController = navControl;
firstLaunch = NO;
}
else {
// create instance of other view controller and set as root of navigation controller
}
return YES;
}
关于为什么我的应用只是导航到黑屏的任何想法?
答案 0 :(得分:0)
确保使用
[window makeKeyAndVisible];
我通常在我的应用程序中这样做:
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
self.navController = [[UINavigationController alloc]init];
self.window.rootViewController = self.mainViewController;
[self.window makeKeyAndVisible];
此外,您的代码始终会说它是用户的第一次。我建议使用NSUserDefaults:
BOOL hasLaunchedBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedBefore"];
if (!hasLaunchedBefore) {
//All your first launch UI stuff
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedBefore"];
[[NSUserDefaults standardUserDefaults] synchronize];
} else {
//Not first launch
}