1

アプリが初めて読み込まれたときに別のビューを起動しようとしています。現時点では、アプリが最初に起動されたときに何かが発生することを実装するこのコードを取得しています。このコードを取得しましたが、開くコードがありません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ステートメントで別のビュー コントローラーを起動する必要があります。しかし、私は何を入れるべきですか?

4

1 に答える 1

2

解決策その1

私はこれをよく使うので、簡単なスニペットを書きました。ここで見つけることができます。
自由に使用、フォーク、または変更してください。


解決策その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;
}
于 2013-10-18T19:22:10.913 に答える