2012-01-06 5 views
0

で保存私は、次のコードを持っている:UIAlertViewは - 私のviewDidLoadの.mファイルでNSUserDefaults

if (![@"1" isEqualToString:[[NSUserDefaults standardUserDefaults] objectForKey:@"Name"]]) { 
    [[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"Name"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 


UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@"What is your name?" message:@"\n\n\n" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Send", nil]; 

UITextField *utextfield = [[UITextField alloc] initWithFrame:CGRectMake (9.0, 60.0, 260.0, 25.0)]; utextfield.placeholder [email protected]"Username"; 
[utextfield setBackgroundColor:[UIColor whiteColor]]; 
[alertview addSubview:utextfield]; 

[alertview show]; 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 

} 

を彼が入力する必要はありませんので、あなたはここで彼の名前を保存することができ、ユーザが見ることができるようにそれは何度も何度も繰り返します。それに加えて、彼がそれを入力した場合、彼は再び尋ねられることはありません。しかし、読み込まれたときに名前を表示する代わりに、アプリは数字1を表示します。私はここではっきりと分かりません。

答えて

1

、私も@「1」と離れてやって、そしてゼロのチェック(@Romanが示唆するように)、またはBOOLを保存するのいずれかを示唆しているalertView:clickedButtonAtIndex:

に行われる必要があります別のデフォルトキーで使用します。

... 
utextfield.tag = 9876; // some value likely not in use by the internals 



- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == alertView.cancelButtonIndex) { 
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"Name"]; 
    } else if (buttonIndex == alertView.firstOtherButtonIndex) { 
    UITextField *utextfield = (UITextField *)[alertView viewWithTag:9876]; 
    [[NSUserDefaults standardUserDefaults] setValue:utextfield.text forKey:@"Name"]; 
    } 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

あなたが

+0

おかげで、あなたのロジックスーツとしてこれを調整することができます。私はあなたのソリューションを試したので、それを無駄に動作するcouldnt。問題が発生するのは、ビューがロードされると常にalertviewがポップアップすることだけです。私は別のものでそれを試しましたが、まだ正しいものを持っていません。 – Blade

+0

'if([[NSUserDefaults standardUserDefaults] objectForKey:@" Name "]] == nil)'は動作しませんでしたか? – bshirley

+0

ありがとうございました。私はちょっと違ったことをしました。 :) – Blade

1

予測を確認します。 "1"でなければ "1"に設定します。おそらく、nilかどうかを確認する必要があります。ユーザーのデフォルトでは名前はありません。あなたが名前の値を設定することはありません

関連する問題