在第一次运行时加载不同的视图[重复]
Posted
技术标签:
【中文标题】在第一次运行时加载不同的视图[重复]【英文标题】:Load different view on first run [duplicate] 【发布时间】:2013-12-16 20:17:38 【问题描述】:我目前正在编写一个应用程序,该应用程序需要在第一次运行时加载一个不同的视图,用户可以在其中选择其首选设置。这是代码
实现AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
// Determining Storyboard identifier for first view
// Determining Storyboard identifier for first view
NSString *storyboardID = [self hasEverBeenLaunched]? @"MainView" : @"LoginView";
// Setting proper view as a rootViewController
self.window.rootViewController = [self.window.rootViewController.storyboardinstantiateViewControllerWithIdentifier: @"view45"] ;
然后继续下面的代码:
- (BOOL)hasEverBeenLaunched
// A boolean which determines if app has eer been launched
BOOL hasBeenLaunched;
// Testig if application has launched before and if it has to show the home-login screen to login
// to social networks (facebook, Twitter)
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasAlreadyLaunched"])
// Setting variable to YES because app has been launched before
hasBeenLaunched = YES;
NSLog(@"App has been already launched");
else
// Setting variable to NO because app hasn't been launched before
hasBeenLaunched = NO;
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasAlreadyLaunched"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"This is the first run ever...");
return hasBeenLaunched;
只是一些简短的说明:视图 45 是初始启动视图,它应该只显示一次,否则主视图控制器在属性下被勾选为初始视图控制器(总是在开始时加载的那个,之后第一次运行)
所以问题是它只加载视图 45,即第一个运行视图,但究竟是什么原因造成的呢?
【问题讨论】:
12 分钟后提出问题?真的吗?!? 【参考方案1】:问题出在下面一行:
self.window.rootViewController = [self.window.rootViewController.storyboardinstantiateViewControllerWithIdentifier: @"view45"] ;
它忽略了storyboardID
的值,只使用字符串@"view45"
,所以这就是为什么你每次都会得到相同的值。
如果要修复它,将其更改为以下行:
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:storyboardID];
您可以看到它现在正在使用 storyboardID 中的值。
【讨论】:
那我该怎么办? 我编辑了我的答案以说明应如何更改代码以将其考虑在内。 更新代码:' // 确定第一个视图的故事板标识符 // 确定第一个视图的故事板标识符 NSString *storyboardID = [self hasEverBeenLaunched]? @"main1" : @"view45"; // 将正确的视图设置为 rootViewController self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:storyboardID] ; ' main1 是普通视图,而 view45 是初始视图。现在出现跳板错误-3,我该怎么办? 我假设这发生在模拟器中。尝试从模拟器中卸载应用程序,关闭模拟器并重新运行应用程序。否则请在真实设备上尝试。以上是关于在第一次运行时加载不同的视图[重复]的主要内容,如果未能解决你的问题,请参考以下文章
我的简单相机应用程序(android)在第一次尝试后不会加载相机视图
ASP.NET MVC5 每个 Razor 页面在第一次加载时非常慢