1

我遇到了一些非常基本的问题。我想调用这个动作:

- (IBAction)changeGreeting:(id)sender {
    self.userName = self.textField.text;

    NSString *nameString = self.userName;
    if ([nameString length]==0) {
        nameString = @"World";

    }
    NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];
    self.label.text = greeting;

}

当用户在文本字段中输入文本后按下返回。这就是我所拥有的:

-(BOOL)textFieldShouldReturn:(UITextField *)theTextField{
    if (theTextField == self.textField) {
        [theTextField resignFirstResponder];
        [changeGreeting];
    }
    return YES;
}

我不知道在写着“changeGreeting”的地方放什么。认为我在这里错过了这个概念。谢谢你的帮助。

4

3 回答 3

2

你的语法是错误的。尝试这个:

[self changeGreeting:self];

在 Objective-C 中发送消息(调用函数)的语法是这样的:

[receiver message];

由于您在调用它的同一类中实现该changeGreeting:方法,因此接收器将是self. 作为参数(发送者),您通常传递发送消息的对象,但由于您在实现中不使用它,changeGreeting:因此您传递的内容并不重要。

于 2012-11-24T21:03:00.043 回答
1

你以错误的方式调用了 changeGreeting 函数

你应该这样称呼它

[self changeGreeting:nil];
于 2012-11-24T21:04:06.580 回答
0

或者,如果您想从 textField 中跟踪某些内容,那么

[self changeGreeting:theTextField];

如果您需要基于文本字段进行一些处理,发件人将获取文本字段作为参数。

于 2012-11-25T03:52:26.253 回答