5

このサイトの真新しい、かなりアマチュアの知識はここにあります! 数週間前に独学を始めました。かなり堅実な iPhone アプリを手に入れましたが、実装したい最後の機能は次の機能です。

「初回起動のみ」のガイド ツアーを作成します。

私が知りたいのは; ユーザーがアプリケーションを最初に起動する場合、ボタンをタップせずに「初期ビューコントローラー」ではない新しいビューコントローラーにビューをリダイレクトするにはどうすればよいですか。

私が理解している最初の起動の検出に関するいくつかのチュートリアルを読みました。また、いくつかのチュートリアルを読み、本のすべてを試して「performSegueWithIdentifier」を実装しようとしましたが、何も機能していません!

おそらく、私は Xcode 5 を使用して iOS 7 でテストしているためです。

(void)viewDidLoad
{
    [super viewDidLoad];

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstLaunch"]) {
    }
    else {
        // Place code here
        self.view.backgroundColor = [UIColor redColor];

        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstLaunch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }    

    // Do any additional setup after loading the view, typically from a nib.
}
4

3 に答える 3

6

を使用してデフォルトを登録していない場合は[[NSUserDefaults standardDefaults] registerDefaults:]、最初に呼び出した[[NSUserDefaults standardDefaults] boolForKey:@"FirstLaunch"]ときにNO、そのキーが存在しないというメッセージが表示されます。

など、よりセマンティックなキー名を使用することを好みますhasPerformedFirstLaunch。その後、それが返されるかどうかを確認しNO、最初の起動シーケンスを実行します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasPerformedFirstLaunch"]) {
        // On first launch, this block will execute

        // Set the "hasPerformedFirstLaunch" key so this block won't execute again
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasPerformedFirstLaunch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    else {
        // On subsequent launches, this block will execute
    }    

    // Do any additional setup after loading the view, typically from a nib.
}
于 2013-10-15T10:29:49.700 に答える
1

ニールコ

あなたが提供したものは機能しますが、アプリの最初の起動時に画面を赤 (または好きな色) にするコードを省略しました。

これは大したことではないように思えるかもしれませんが、初心者が挑戦するときは、私たちでさえ何が起こっているのかを理解できるように、できるだけ多くの情報を提供するのが最善です. はい、それには私が含まれています!! <<=初心者

  - (void)viewDidLoad
{
    [super viewDidLoad];

    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasPerformedFirstLaunch"]) {
        // On first launch, this block will execute
        // Place code here
        self.view.backgroundColor = [UIColor redColor];

        // Set the "hasPerformedFirstLaunch" key so this block won't execute again
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasPerformedFirstLaunch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    else {
        // On subsequent launches, this block will execute
    }

    // Do any additional setup after loading the view, typically from a nib.
}
于 2014-01-29T11:17:11.003 に答える