我正在尝试在我的应用程序中创建某种忠诚卡,基本上当输入正确的密码我希望它改变UIImageView的图像,但我无法让它工作,这里有一些代码:
@synthesize imageView;
- (IBAction)Stamp:(id)sender
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"SECRET CODE" message:@"Please hand your device to the business representative who will stamp your card" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"STAMP", nil];
alert.alertViewStyle = UIAlertViewStyleSecureTextInput;
[alert show];
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == alertView.firstOtherButtonIndex)
{
UITextField *textfield = [alertView textFieldAtIndex:0];
NSString *s1 = @"stamp";
if (textfield.text == s1)
{
UIImage * Stampit = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"1Stamp@2x" ofType:@"png"]];
[imageView setImage:Stampit];
}
}
}
答案 0 :(得分:1)
您不应该使用引用相等(==
)运算符来比较字符串。相反,请使用isEqualToString:
的{{1}}方法,如下所示:
NSString
使用NSString *s1 = @"stamp";
if ([textfield.text isEqualToString:s1]) {
...
将确定==
引用的NSString
实例和textfield.text
引用的NSString
实例是否是相同的对象,意味着两个变量都指向内存中的相同地址。
这是不你想要比较字符串的方式 - 相反,你想比较个别字符,确保它们是相同的情况,等等。这是s1
会为你做什么。