-1

我在 CustomCell 中有一个 UITextFiled。然后我在 ProductDelivery 类的 UITableView 中加载这些单元格。我正在为 UITextField *txtQty CellForRowAtIndexPath 方法分配一些初始值。

我的问题是我想验证用户在 UITextField 中输入的值不能大于以上单元格 UItextField 的值。

当用户在 UITextField CustomCell 类 DidEndEding 方法类中输入值但我希望在 UITableView 类中有这个值,即产品交付。所以我可以验证它并用新值重新加载 UITableView。有人可以帮我解决这个问题吗?

@interface ProductDeliveryCell : UITableViewCell<UITextFieldDelegate>
@property(nonatomic,retain)IBOutlet UITextField *txtQty;
@end

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ProDeliveryCell";
    cell =(ProductDeliveryCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell==nil) 
{

        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"ProductDeliveryCell" owner:self options:nil];
        cell = [topLevelObjects objectAtIndex:0]; 
    }
 cell.txtQty.text=del.Qty;
return cell;
}
4

2 回答 2

2

最好的方法是将所有输入的值存储在一个特殊的字典中。您应该创建NSMutableDictionary放置价值观的地方。并且UITextField您的单元格中的每个都应该将其自己的标签设置为indexPath.row值(在tableView:cellForRowAtIndexPath:消息中)。现在在textField:didEndEditing消息中,您应该使用如下代码存储输入的值:

[valuesDictionary setValue:textField.text forKey:[NSString stringWithFormat:@"field%02d", textField.tag]];

因此,您可以随时检查任何输入的值。只需获取已编辑文本字段的标签并[NSString stringWithFormat:@"field%02d", tag-1]从字典中选择键的值。

于 2012-08-24T10:08:41.877 回答
1

现在在变量中输入时保存 textField 值说 currentValue;

在这件事上使用 UITextFieldDelegates。检查输入的值是否大于上面输入的值

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if(currentValue > 0)//(!(currentValue == 0)) //intially it will be zero
    {
       if([textField.text intValue] > currentValue)
       {
             //message value greater
             textField.text = [textField.text substringToIndex:[textField.text length] - 1]; //remove last number entered
        }
     }
}

保存新值

- (void)textFieldDidEndEditing:(UITextField *)textField
{
  currentValue = [textField.text intValue]; //save new Value
}
于 2012-08-24T10:12:03.167 回答