0

デリゲートからモーダルビューを作成して、アプリケーションが初めて起動したときにモーダルビューを表示し、ユーザーに重要なことを通知するために、却下ボタンを表示するにはどうすればよいですか?

アプリケーションが最初に起動されたときだけ表示され、二度と表示されないビューが必要です。

4

4 に答える 4

3

最初に:ここで私の以前の答えをチェックしてください:https ://stackoverflow.com/a/13563490/1359306

これは、アプリを開くたびに使用するパスワード保護モーダルビュー用です。答えは、ソリューションを実装するときに発生する可能性のあるいくつかの問題に役立つはずです。performSegueWithIdentifierストーリーボードを使用しているので使用しますが、ビューを表示するために使用presentViewController:animated:completion:することもできます。

次に:ifビューを表示する必要があるかどうかを確認するために使用できるステートメントがあることに注意してください。私の場合、ユーザーが5分以上アプリを使用していないかどうかを確認します。NSUserDefaultsこれを行うには、呼び出されるたびに日付を設定し、それとapplicationWillResignActive現在の日付/時刻の違いを確認します)。

あなたの場合、あなたは次のようなことをすることができます:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"firsttime"] == nil) {
    //display modal view
    [defaults setObject:@"YES" forKey:@"firsttime"];
    [defaults synchronize];
}

NSUserDefaultsこれにより、アプリのがチェックされます。'firsttime'がnil(アプリが最初にダウンロードされたとき)の場合、ビューが表示されます。次に、キーを「YES」に設定します。これは、キーが再びnilに等しくなることはないため、ビューが表示されないことを意味します。

これは、アプリが最初に読み込まれたときに指示を表示するのに役立ちます。または、日付または数値を保存して、将来的にコードをより適応性のあるものにすることもできます。

のドキュメントはNSUserDefaultsここにあります

于 2013-02-19T16:14:16.490 に答える
1

を使用してこれを達成できますNSUserDefaults

デリゲート.hファイル内

NSString * firstTime;

.mファイル内

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *myStr = [defaults objectForKey:@"str"];
    firstTime =myStr;

    if (firstTime.length==0) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"hi" message:@"You have open this app first time" delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];
        [alert show];
        [self firstTime];
    }

    return YES;
}

-(void)firstTime
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *myStr = @"first";
    [defaults setObject:myStr forKey:@"str"];
    [defaults synchronize];
}
于 2013-02-19T16:13:43.877 に答える
1

AppDelegateusingメソッドでdidFinishLaunchingWithOptions、アプリケーションがこのように1回目または2回目に起動するかどうかを確認します

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstTime"])
    {
        // show your main view controller
    }
    else
    { // your app is launching first time ....

      // show your modalview controller here and dismiss it & go to main view controller


      // don't forget to update the key so that next time user don't hang in else statement...

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

    }
}
于 2013-02-19T16:15:05.267 に答える
0

presentViewController:animated:completion:UIViewControllerクラスでを使用できます。

だからここに私がすることです:

  1. メインビューコントローラをロードします
  2. ユーザー設定をチェックして、「初回」キーが存在するかどうかを確認します(ビューでロードされた可能性が最も高い)
  3. ワンタイムビューが表示されない場合
  4. 完了したら(デリゲートがメインのView Controllerにコールバックすることでわかります)、「初回」キーをユーザー設定に保存します

ソースもコードもありません(私のMacは家にあります)が、これらの簡単な手順に従うと、問題なく動作するはずです。

于 2013-02-19T16:06:19.783 に答える