私は UITableView をプログラムでセットアップしており、状態のすべての名前が入力されています。たとえば、セルの1つをクリックすると。ALABAMA、UIAlertView が表示されます。タイトルは、クリックしたばかりの州 (ALABAMA) のタイトルであり、別の NSMutable 配列にあるその州に関連する番号です。すべての州には、それに関連付ける異なる番号があります。
この数値は、実際には UIAlert のプレースホルダー テキストです。アラートの目的は、テキスト フィールドに数値を入力できるようにすることです。変更ボタンを押すと、プレースホルダー テキストにあった数値が (配列から) ) ユーザーが割り当てた番号で変更されます。永久に。変更をヒットするまではすべて問題ありませんが、SIGABRT エラーが発生し、出力には次のように表示されます。
2013-02-21 20:57:33.750 final[10046:11303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM replaceObjectAtIndex:withObject:]: object cannot be nil'
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:[NSString stringWithFormat:@"%@", [states objectAtIndex:indexPath.row]]
message:[NSString stringWithFormat:@"%@", [tax objectAtIndex:53]]
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Change", nil];
UITextField *myTextField =[[UITextField alloc] initWithFrame:CGRectMake(42, 50, 200, 25)];
CGAffineTransform myTransform =CGAffineTransformMakeTranslation(0, 0);
[alertView setTransform:myTransform];
[myTextField setBackgroundColor:[UIColor clearColor]];
[alertView addSubview:myTextField];
myTextField.placeholder = [NSString stringWithFormat:@"%@", [tax objectAtIndex:indexPath.row]];
myTextField.borderStyle = UITextBorderStyleNone;
myTextField.returnKeyType = UIReturnKeyDone;
myTextField.textColor = [UIColor grayColor];
myTextField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
myTextField.textAlignment = UITextAlignmentCenter;
myTextField.delegate = self;
[alertView show];
[alertView release];
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
NSString *theTaxer = [myTextField text];
[tax replaceObjectAtIndex:1 withObject:theTaxer];
}
}