2012-04-01 10 views
1

ダイナミックに作成されたUITextFieldのセットをループして、後で配列に追加するためにこれらの値をダブルとして格納するのに問題があります。私はobj-cのプログラミングにまだかなり新しいので、この質問が些細なものであれば私にも負担してください。ありがとう。これは私がこれまで持っていたものです。UITextFieldをループしてdouble値を格納する

NSMutableArray *textFieldCashArray = [NSMutableArray array]; 

編集
あなたのエラーログが使用することを示しています。ここ

NSMutableArray *textFieldCashArray = [[NSMutableArray alloc] init]; 
double textFieldCash; 
for (int y=0; y<25; y++) {  
    UITextField *myLabel = (UITextField *)[self.view viewWithTag:y];    
    textFieldCash = [myLabel.text doubleValue]; 
    [textFieldCashArray addObject:[NSNumber numberWithDouble:textFieldCash]];  
} 

PSとは、私はあなたが最初に配列を作成する必要があり

Pro[962:b303] -[UIControl text]: unrecognized selector sent to instance 0x680f850 
2012-04-01 16:05:46.305 iFinance Pro[962:b303] *** Terminating app due to uncaught  exception 'NSInvalidArgumentException', reason: '-[UIControl text]: unrecognized selector sent to instance 0x680f850' 
*** Call stack at first throw: 
+0

正確には、このコードはあなたのViewControllerにありますか? –

+0

これらの 'UITextField'は' UITableView'ですか? –

答えて

2

ここでは、ループ変数がタグとして使用されており、 。 viewWithTagは、受信側またはそのサブビューのいずれかに特定のタグが付いているので、ビューコントローラのメインビューにタグ== 0(おそらく)がある場合、最初のテキスト要求がそのトップレベルビューに送信されます。

テキストフィールドタグにSOME_OFFSETから始まるゼロ以外の値を設定してみてください。あなたのループで:

for (y=0; y<25; y++) { 
    UITextField *myLabel = (UITextField *)[self.view viewWithTag:y+SOME_OFFSET]; 
    // ... 
} 
+0

+1良い、よく目を向けた。 –

+0

ありがとうございます、あなたのソリューションは動作します! – SNV7

0

を取得していますエラーメッセージですUITextFieldではなく、別のUIControlオブジェクト(たとえばUIBtton)を受け取ります。 xib(またはプログラムで設定した場合はアルゴリズム)のタグをチェックし、UITextFieldオブジェクトに対応するタグがあることを確認してください。

1

ダンはこの問題の原因と解決策について最も適切です。ちょっと追加するだけで、キャストする前にクラスをチェックすることで、このようなケースを回避することができます。

if ([[self.view viewWithTag:y] isKindOfClass:[UITextField class]]) { 
    UITextField *myLabel = (UITextField *)[self.view viewWithTag:y];    
    textFieldCash = [myLabel.text doubleValue]; 
    [textFieldCashArray addObject:[NSNumber numberWithDouble:textFieldCash]]; 
} 
関連する問題