我正在尝试让我的应用在首次加载时启动不同的视图。目前,我已经获得了这段代码,该代码实现了应用程序首次启动时应该发生的事情。我有此代码,但缺少打开Initialviewviewcontroller
的代码。我不知道如何执行此操作,因此将不胜感激
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL hasRunBefore = [defaults boolForKey:@"FirstRun"];
if (!hasRunBefore) {
[defaults setBool:YES forKey:@"FirstRun"];
[defaults synchronize];
// what goes here??
else
{
NSLog (@"Not the first time this controller has been loaded");
因此,我应该在
if
语句中启动其他视图控制器。但是我应该放什么呢? 最佳答案
解决方案1
我为此编写了一个简单的代码段,因为我经常使用它。您可以找到它here。
随时使用,分叉或修改它!
解决方案2
您可以在AppDelelegate.m
中执行类似的操作
在底部添加此简单方法:
- (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;
}
实现此方法后,您可以像这样使用它:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Determining Storyboard identifier for first view
NSString *storyboardID = [self hasEverBeenLaunched]? @"MainView" : @"LoginView";
// Setting proper view as a rootViewController
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:storyboardID];
return YES;
}
关于ios - 在初始运行时打开不同的 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19457386/