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;

}

ユーザーがテキスト フィールドにテキストを入力した後に Return キーを押したとき。これは私が持っているものです:

-(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. パラメーター (sender) として、通常はメッセージを送信するオブジェクトを渡しますが、実装では使用しないため、changeGreeting:そこに何を渡すかは問題ではありません。

于 2012-11-24T21:03:00.043 に答える
1

changeGreeting 関数を間違った方法で呼び出しました

あなたはそれを次のように呼ぶべきです

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

または、textField から何かを追跡したい場合は、

[self changeGreeting:theTextField];

textField に基づいて何らかの処理が必要な場合、送信者は theTextField をパラメーターとして取得します。

于 2012-11-25T03:52:26.253 に答える