比较UITextField的文本和字符串时if语句出错

时间:2015-05-27 10:46:43

标签: ios objective-c iphone xcode xcode6

在我的应用中,我有一个视图控制器,其顶部有UItextfield的搜索栏,下方有UIImageview。图像视图最初是隐藏的。

我希望此图片视图取消隐藏if语句。用户将在文本字段中输入关键字,当某个单词与.m文件中预定义的字符串匹配时,它必须显示该图像。

我最初有两个视图控制器,但现在我添加了另一个(thirdviewcontroller)。当我在文本字段中输入一个单词时,模拟器会将我引回到此行上以绿色突出显示的代码:

 if ([string1 isEqualToString:string2])  {

     locationMap.hidden = YES;

这是.h文件:

@interface ThirdViewController : UIViewController
{
    IBOutlet UITextField *searchLocation;
    IBOutlet UIImageView *locationMap;
}
-(IBAction)SearchGo;
@end

这是.m文件:

-(IBAction)SearchGo{

    NSString *string1 = searchLocation.text;
    NSString *string2= @"sydney";
    if ([string1 isEqualToString:string2]) {
        locationMap.hidden = YES;
    }
}

3 个答案:

答案 0 :(得分:1)

听起来你不小心设置了一个断点。只需单击断点所在行左侧的蓝色箭头即可删除断点。

答案 1 :(得分:0)

viewDidLoad方法中,使用:

locationMap.hidden = YES;

-(IBAction)SearchGo方法中,使用:

locationMap.hidden = NO;

searchGo方法:

-(IBAction)SearchGo{

    if ([searchLocation.text isEqualToString:@"sydney"]) {
        locationMap.hidden = NO;
    }else {
       //implementation
    }
}

答案 2 :(得分:0)

我猜,你已经将IBAction附加到你的textfield,searchLocation并触发了指定“Touch up Inside”的动作。由于几个原因,这不起作用。

首先,您需要实现textFieldShouldReturn:delegate方法,以便控制器知道何时按下return,它应该从文本字段移交控件。然后再次,你已经将你的动作方法附加到你的文本字段,一旦你点击文本字段,它就转到你的方法并开始比较,但此时,你在你的文本字段中没有输入任何内容而且它不符合你的条件。

解决方案是使用具有按钮并将操作方法​​附加到该按钮。这样,在你输入单词“sydney”之后,你就点击了按钮。它将在您的文本字段中采用任何内容并与之进行比较。

这是解决方案 -

enter image description here

查看名为“Go”的额外按钮。将您的方法附加到它。

这是我的.h文件 -

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITextFieldDelegate>

@property(nonatomic, strong)   IBOutlet UITextField *searchLocation;
@property(nonatomic, strong)   IBOutlet UIImageView *locationMap;

-(IBAction)SearchGo:(id)sender;

@end

这是.m文件 -

#import "ViewController.h"

@interface ViewController ()

@property(nonatomic, strong) NSString *string1;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];

}

#pragma mark- textfield delegate

- (void)textFieldDidEndEditing:(UITextField *)textField{
    self.string1 = textField.text;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    return YES;
}

-(IBAction)SearchGo:(id)sender{
    NSString *string2= @"Sydney";
    if ([self.string1 isEqualToString:string2]) {
        self.locationMap.hidden = NO;
    }
}

@end

通过委托方法完成编辑后,保存文本字段中的字符串。确保将UITextFieldDelegate附加到ViewController。

或者,您可能希望避免所有这些麻烦并使用UISearchDisplay控制器。