0

非常に簡単に見えるチュートリアルを実行していましたが、機能させることができませんでした。目標は、IB で作成された UI ビューにラベルとボタンを配置することです。ラベルは「Hello World」と表示され、ボタンをクリックするとテキストが「Hello iPhone」に変わります。コードを実装すると、ラベルは変わりません。デバッグすると、ラベルが「null」であることがわかりましたが、理由がわかりません...これについて助けていただければ幸いです。

ラベルのタグ値は「55」です。

私のコードは次のようになります: インターフェイス ファイル内:

-(IBAction)buttonTapped;

メインファイルで:

-(IBAction)buttonTapped{
    UILabel *label = (UILabel*) [window viewWithTag:55];
    NSLog(@"The label's text is %s",label.text); //my debug statement

    if([label.text isEqualToString:@"Hello World"])
        label.text = @"Hello iPhone";
    else
        label.text = @"Hello World"; 
}
4

3 に答える 3

1

あなたがViewControllerにいると仮定します。あなたのウィンドウプロパティが何であるかわかりません。また、文字列には「%@」を使用する必要があります。フォーマット指定子

-(IBAction) buttonTapped:(UIButton*)sender{    
    UILabel *label = (UILabel*) [self.view viewWithTag:55];
    NSLog(@"The label's text is %@",label.text); //my debug statement

    if([label.text isEqualToString:@"Hello World"])
        label.text = @"Hello iPhone";
    else
        label.text = @"Hello World";

}
于 2012-07-19T20:18:28.293 に答える
0

行間を読むと、アクション メソッドが起動されていないように聞こえます。

ラベル テキストが空白であることをどのように知っていたかについては明確ではありませんでしたが、実際に NSLog に結果を出力させたと仮定できますか? そうでない場合は、最初の文を参照してください... アウトレット アクションを指すように、Interface Builder で Button が正しく配線されていることを確認します。

于 2012-07-19T20:13:31.683 に答える
-1

@interface には次のものが必要です。

IBOutlet UILabel *label;

次に、-(IBAction)buttonTapped で次のようにします。

NSLog(@"The label's text is %s",label.text); //my debug statement

if([label.text isEqualToString:@"Hello World"])
        label.text = @"Hello iPhone";
else
        label.text = @"Hello World";
}
于 2012-07-19T20:06:48.567 に答える