当使用NSArray中的字符串时,如何将UITextField推送到新的ViewController?

时间:2013-10-22 22:04:45

标签: ios objective-c uitextfield nsarray

我创建了一个名为UITextField的{​​{1}},一个名为textField的{​​{1}}字符串和一个提交按钮。

我想要发生的是,如果用户输入NSArray的文本包含keywordsArray中的一个字符串,它会推送到一个视图控制器,如果不是,它会推送到另一个视图控制器

现在我的代码看起来像这样:

UITextField

然后它说

  

“不兼容的指针类型将'NSArray *'发送到'NSString *'类型的参数”

我如何做到这一点,如果有人输入“他很高”,它会推送到keywordsArray,因为“tall”是一个关键字。

2 个答案:

答案 0 :(得分:2)

这一行:

if ([self.textField.text isEqualToString:self.keywordArray]) 

是您的错误所在。基本上,将字符串与数组进行比较没有任何意义。

您应该检查文本字段中的text是否包含数组中的任何单词,而不是您正在执行的操作。这意味着迭代数组并检查每个项目。

这看起来像是:

for (NSString *word in self.keywordArray) {
    if ([self.textField.text rangeOfString:word].location != NSNotFound) {
        [self.navigationController pushViewController:yesViewController animated:YES];
        return YES;
    }
}

[self.navigationController pushViewController:noViewController animated:YES];
return YES;

答案 1 :(得分:1)

基本上,我同意Wain的代码部分

for (NSString *word in self.keywordArray) {
    if ([self.textField.text rangeOfString:word].location != NSNotFound) {
 ...

但是在BOOL函数中推送视图控制器是非常错误的。 我会写这样的方法:

// In your example, you missed to close quotes for word funny
self.keywordsArray=@[@"funny", @"tall", @"handsome"];
[submitButton addTarget:self action:@selector(showresponse:) forControlEvents:UIControlEventTouchUpInside];

-(void)showresponse:(UIButton *)sender{
    // Initialize view controller which you'll need, not both.
    if ([self containsKeyword:self.textField.text]) {
        YesViewController *yesViewController=[[YesViewController alloc]init];
        [self.navigationController pushViewController:yesViewController animated:YES];
    } else {
        NoViewController *noViewController=[[NoViewController alloc]init];
        [self.navigationController pushViewController:noViewController animated:YES];
    }
}

// Now this method can be reusable for any other field or controler                     
- (BOOL)containsKeyword:(NSString*)text {
    for (NSString *word in self.keywordArray) {
        if ([text rangeOfString:word].location != NSNotFound) {
            return YES;
        }
    }
    return NO;
}