我不知道为什么这不起作用,我觉得这是非常愚蠢的......我正在尝试比较两个文本字段(比如确认密码类型的东西),但它只是不起作用!!我尝试了几种不同的选择,但没有一种可行。我试过了:
if (passwordCheckField1.text == passwordCheckField2.text) {
[self performSegueWithIdentifier:@"segue4" sender:nil];
}
我试过了:
NSString *retrivedPasswordCheckField1 = passwordCheckField1.text;
NSString *retrivedPasswordCheckField2 = passwordCheckField2.text;
if ([retrivedPasswordCheckField1 isEqualToString:retrivedPasswordCheckField2]) {
[self performSegueWithIdentifier:@"segue4" sender:nil];
}
我试过了:
if ([passwordCheckField1.text isEqualToString:retrivedPasswordCheckField2.text]) {
[self performSegueWithIdentifier:@"segue4" sender:nil];
}
我在.h中实现了<UITextFieldDelegate>
,我还为两个字段设置了委托,(passwordCheckField1.delegate = self;
passwordCheckField2.delegate = self;
)
我错过了什么?谢谢你的帮助!
修改
我可能应该提到我正在使用带有多个子视图控制器的导航控制器。每个都包含一个文本字段,因此当视图控制器关于第一个密码出现时,用户输入它然后单击下一步将它们带到确认密码视图控制器。所有都链接到相同的类文件。
答案 0 :(得分:4)
这应该有用。
NSString *password = passwordCheckField1.text;
NSString *confirmPassword = passwordCheckField2.text;
NSLog(@"password: '%@'", password);
NSLog(@"confirmPassword: '%@'", confirmPassword);
if([password isEqualToString: confirmPassword]) {
NSLog(@"Match");
} else {
NSLog(@"Not Match");
}
答案 1 :(得分:1)
if (passwordCheckField1.text == passwordCheckField2.text) {
[self performSegueWithIdentifier:@"segue4" sender:nil];
}
上面的代码不比较两个字符串值。它实际上比较了两个指针值。所以它对你没用。
但代码
if ([retrivedPasswordCheckField1 isEqualToString:retrivedPasswordCheckField2]) {
[self performSegueWithIdentifier:@"segue4" sender:nil];
}
应该比较字符串值。可能是字符串,您的值不相同或nil
。您是否打印了passwordCheckField1.text
和passwordCheckField2.text
。两个字符串的值是什么?
答案 2 :(得分:1)
chk你的价值观。
if ([passwordCheckField1.text isEqualToString:passwordCheckField2.text]) {
//Match it's working for me
}
答案 3 :(得分:0)
试试这个
if([[passwordCheckField1 text] isEqualToString:[passwordCheckField2 text]])
{
[self performSegueWithIdentifier:@"segue4" sender:nil];
}
else
{
//not matched
}
答案 4 :(得分:0)
作为预防措施,尝试在比较之前尝试前导和尾随空格的密码字符串,例如
NSString *pwd1 = [pwdTxtField1.text stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" "]];