0

我有动态添加到自定义的 qtyTextFields UITableViewCell。我想要做的是检测用户是否在 中输入了字符串 0UITextField并从 if 中删除一个对象NSMutableArray。(我知道如何从那NSMutableArray很好地删除对象)

下面的这个实现对我没有任何作用,甚至没有记录任何东西:

-(void)textFieldDidEndEditing:(UITextField *)textField{  
    if ([qtyTextField.text isEqualToString: @"0"])
    {
        NSLog(@"You ENTERED 0");
        [theProducts removeObjectAtIndex:qtyTextField.tag];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *path = [documentsDirectory stringByAppendingPathComponent:@"basket.plist"];
        [theProducts writeToFile:path atomically:YES];
    }
    else
    {
        NSLog(@"Do Nothing");
    } 
    [self.tableView reloadData];
    }
}
4

3 回答 3

2

您是否尝试过使用从该方法获得的 UITextField 实例?因此 if 语句将显示为:

if ([textField.text isEqualToString: @"0"]){
    //code here
}
于 2012-05-11T13:22:24.020 回答
0

如果它甚至没有记录任何内容,那么听起来您没有在文本字段上设置委托。首先执行此操作,然后您应该会在日志中看到“ DO NOTHING”或“ ”。You Entered Something

于 2012-05-11T13:23:37.653 回答
0

可能有各种情况导致您的代码无法正常工作:-

1.你可能没有在.h文件中实现UITextFieldDelegate

2.您可能没有在 viewDidLoad 方法中设置文本字段委托

myTextField.delegate=self;

您可以使用此代码

if([myTextField.text length]==0)
{
//Show some error
}
else
{
if([myTextField.text isEqualToString:[NSString stringWithFormat:"%@",@"0"]])
{
//Your Operation
}
}

在这里,您可能需要记住文本字段委托的设置。如果它在 tableview 上,那么它的委托将是 tableviewcontroller,如果你有其他的 viewcontroller。

于 2012-05-11T13:33:57.350 回答