【问题标题】:Loop through UITextField's and store double values遍历 UITextField 并存储双精度值
【发布时间】:2012-04-15 14:30:03
【问题描述】:

我在循环一组动态创建的 UITextField 并将这些值存储为双精度值以便稍后添加到数组时遇到问题。我对 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:

【问题讨论】:

  • 这段代码在你的 ViewController 中到底在哪里?
  • 这些UITextField 是否在UITableView 中?

标签: iphone objective-c xcode cocoa-touch ipad


【解决方案1】:

你应该首先创建数组:

NSMutableArray *textFieldCashArray = [NSMutableArray array];

编辑
您的错误日志显示您正在接收另一个 UIControl 对象(例如 UIBtton)而不是 UITextField。检查您在 xib 上的标签(或算法,如果您以编程方式设置)并确保 UITextField 对象具有相应的标签

【讨论】:

    【解决方案2】:

    我认为这里发生的事情是循环变量被用作标记,并且循环从零开始。 viewWithTag 将使用给定标签回答接收者或其中一个子视图,因此如果视图控制器的主视图具有 tag==0(它可能确实如此),则您的第一个文本请求将被发送到该顶级视图。

    尝试将文本字段标签设置为某个非零值,从 SOME_OFFSET 开始。然后在你的循环中:

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

    【讨论】:

      【解决方案3】:

      danh 关于这个问题的原因和解决方案肯定是正确的。补充一点,通过在转换前检查 Class 可以在一定程度上避免这种情况。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-15
        • 2015-06-05
        • 2018-11-12
        • 1970-01-01
        • 1970-01-01
        • 2021-08-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多