を使用してUIAlertView
いますが、次のエラー メッセージが表示されます。
* キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: 'textFieldIndex (0) はテキスト フィールドの配列の範囲外です'
しかしtextFields
、私の中にはなく、UIAlertView
どこかにアクセスすることはありません...
これは私のコードです:
alertNewVersion = [[UIAlertView alloc] initWithTitle: @"Update"
message: @"There is a new version"
delegate: self
cancelButtonTitle:@"OK"
otherButtonTitles:@"Cancel",nil];
[alertNewVersion setAlertViewStyle:UIAlertViewStyleDefault];
alertNewVersion.tag = 1;
[alertNewVersion show];
ただし、「delegate:self
」を「」に変更するdelegate:nil
と、エラーでクラッシュすることはありませんが、もちろんデリゲート関数は機能しません...どのように問題が発生する可能性がありますか?
編集:
2 番目の UIAlertView:
- (IBAction)startPushed:(id)sender {
message = [[UIAlertView alloc] initWithTitle:@"test."
message:nil
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[message setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];
[[message textFieldAtIndex:1] setSecureTextEntry:NO];
[[message textFieldAtIndex:0] setPlaceholder:@"xx"];
[[message textFieldAtIndex:1] setPlaceholder:@"xxx"];
message.tag = 2;
[message show];
}
委任方法:
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if(alertView.tag == 1){ // alertNewVersion
if (buttonIndex == 0) { //button "OK" clicked
NSLog(@"test");
}
}
if(alertView.tag == 2){ // Message
if (buttonIndex == 0) { //button "OK" clicked
NSString *Name = [[message textFieldAtIndex:0] text];
[[NSUserDefaults standardUserDefaults] setObject:Name forKey:@"xx"];
NSString *Class = [[message textFieldAtIndex:1] text];
[[NSUserDefaults standardUserDefaults] setObject:Class forKey:@"xxx"];
}
}
}