2011-11-03 10 views
1

初めてUIAlertViewを再生するときに何か問題がありますか?私のdidFinishLaunchingWithOptionsでは、私のMainViewControllerがインスタンス化されます。だから、MainViewControllerさんのviewDidLoadで、私はこれを行う:私は、デバイス上でそれをしようとすると初めてアプリケーションを起動したときにUIAlertViewを表示する

BOOL shouldAlert = [[NSUserDefaults standardUserDefaults] boolForKey:@"ShowAlert"]; 
if (!shouldAlert) { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyAlert" message:@"Some text here" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles: nil]; 
    [alert show]; 
    [alert release]; 
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ShowAlert"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

、それは私がタップ家を倍増場合は動作、および背景からそれを削除するには、アプリケーションの隣にマイナス記号をヒットしませんモード(ダブルタッピングは正しいと思いますか?)私がそれをした後、ポップアップが再び現れます。私がそれをしなければ、警報は一度だけ表示されます。これは予想される動作ですか?本当にありがとう。

+0

それは動作します: 私はuserdefaultsがあなたのブール値はNOまたはFALSE チェックがこの例である他に存在するかどうかをチェックすべきだと思いますか?もしそうなら、おそらく何か間違ったことはしていないでしょう。 'shouldAlert'変数がうまく読み込めないことを除いて、ここからはうまく見えます。個人的には、それを 'hasOpenedPreviously'に変更するか、名前を残してブール値をすべて逆転させます。 –

+0

@Patrick Periniいいえ、私は二度とタップしてからバックグラウンドモードからアプリを削除してから、アラートがポップアップしてから動作しません。私はそれを私のポストに加えるべきです。 – Crystal

+0

アプリを終了させると 'NSUserDefaults'が混乱することはないので、変です。ブール値が固定されているかどうかの詳細を取得するために、NSUserDefaultsに関するログ文を試してみます。 –

答えて

0

整数(0/1)で試してください。 BOOLにもいくつか問題がありました。

setInteger:forKey: 
integerForKey: 

EDIT 警告を示す/ INITING前にデフォルト値を更新してください。
そして、変数名を更新してください。あなたのコードは、現在の名前のナンセンスです。

はこれを試してみてください:

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; 
BOOL hasAlreadyBeenLaunched = [defaults boolForKey:@"HasAlreadyBeenLaunched"]; 

if (!hasAlreadyBeenLaunched) { 
    [defaults setBool:YES forKey:@"HasAlreadyBeenLaunched"]; 
    [defaults synchronize]; 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyAlert" message:@"Some text here" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles: nil]; 
    [alert show]; 
    [alert release]; 
} 
+0

私は同じ問題を試みました。 – Crystal

+0

@Crystal:私の編集を参照してください。 – Oliver

+0

@Crystal:私の編集の助けがありましたか? – Oliver

0

あなたがuserdefaulsからあなたshouldAlert最初の時間を取得しますか?

NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults]; 
shouldAlert = YES; // define in the .h 
if(userDef) 
shouldAlert = [userDef boolForKey:@"ShowAlert"]; 
+0

それは狂った言葉であり、重要ではありません。彼女は(正確に) '[[NSUserDefaults standardUserDefaults] boolForKey:@" ShowAlert "];の返り値を記録できるので、これは特に無関係です。 –

関連する問題