我无法循环遍历一组动态创建的UITextField,并将这些值存储为double,以便稍后添加到数组中。我仍然对obj-c编程很陌生,所以如果这个问题看似微不足道,请耐心等待。谢谢。这是我到目前为止所做的。
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]];
}
P.S,这是我正在收到的错误消息
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 :(得分:2)
我认为这里发生的是循环变量被用作标记,循环从零开始。 viewWithTag将使用给定标记回答接收者或其中一个子视图,因此如果视图控制器的主视图具有tag == 0(它可能确实如此),则您的第一个文本请求将被发送到该顶级视图。 / p>
尝试将文本字段标记设置为某个非零值,从SOME_OFFSET开始。然后在你的循环中:
for (y=0; y<25; y++) {
UITextField *myLabel = (UITextField *)[self.view viewWithTag:y+SOME_OFFSET];
// ...
}
答案 1 :(得分: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]];
}
答案 2 :(得分:0)
您应该首先创建数组:
NSMutableArray *textFieldCashArray = [NSMutableArray array];
修改强>
您的错误日志显示您正在接收另一个UIControl对象(例如UIBtton)而不是UITextField。检查xib上的标记(如果以编程方式设置,则检查算法),并确保UITextField对象具有相应的标记