在我的应用中,我有一个视图控制器,其顶部有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;
}
}
答案 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”之后,你就点击了按钮。它将在您的文本字段中采用任何内容并与之进行比较。
这是解决方案 -
查看名为“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控制器。