在 Objective-C cocoa 中使用一种方法



我在一些非常基本的事情上遇到了麻烦。我想调用此操作:

- (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"的地方放什么。认为我在这里错过了这个概念。感谢您的任何帮助。

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

[self changeGreeting:self];

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

[receiver message];

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

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

你应该这样称呼它

[self changeGreeting:nil];

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

[self changeGreeting:theTextField];

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

相关内容

最新更新