質問

なぜこのコードが機能しないのかわかりません。ボタンをクリックしたとき (アクション:buttonclick) 2 つのテキスト ボックス (MyTextLabel と MyTextLabel2) のテキスト増分値「r」を 1 ずつ変更する必要があります。コードは次のとおりです。

MainView.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface MainView : UIView {
    IBOutlet UIButton *MyButton;
    IBOutlet UILabel *MyTextLabel;
    IBOutlet UILabel *MyTextLabel2;
}

@property (nonatomic, retain) UIButton *MyButton;
@property (nonatomic, retain) UILabel *MyTextLabel;
@property (nonatomic, retain) UILabel *MyTextLabel2;


- (IBAction)buttonclick;
@end

MainView.m:

#import "MainView.h"
#include <stdlib.h>
#include <libc.h>

@implementation MainView

@synthesize MyButton, MyTextLabel, MyTextLabel2;

int r;

- (IBAction)buttonclick {
    r++
    if(r < 50) {
        MyTextLabel.text = @"< 50";
    }
    else {
        MyTextLabel2.text = @"=> 50";
    }
}
@end
役に立ちましたか?

解決

私は何かがあなたがint rを使用している方法で間違っている気がします。 static int r;ラインの下、MainView.hに@interfaceラインの上部に- (IBAction)buttonclick;を入れて試してみても追加します:

+(void) initialize;

次にMainView.mからint r;を削除します。その後MainView.mに追加します:

+(void) initialize {
   count = 0;
}

他のヒント

次の 2 つの問題があります。

  1. 宣言することはできません int r どこにあるか。これは、インターフェイスの変数ブロック (ボタンとラベルを宣言する場所、またはメソッドの外で宣言する場所) またはメソッド定義で宣言する必要があります。
  2. r++ を含む行はセミコロンで終わっていません。

あなたは正確に、あなたがそれを期待する方法は動作していないものを、あなたの質問に言うことはありません。私の推測では、あなたの店が実際に正しく接続されていないことになるだろう。あなたはこのようbuttonClickするために、ログ文を追加したい場合があります:

NSLog(@"button click called! MyTextLabel is %@", MyTextLabel);

ポイントビーイングは、主に、それはnilされていないことを確認します。

のObjective-Cでは、変数やプロパティの名前は、キー値コーディング(KVC)プロトコル(常にmyButtonという、決してMyButtonという)に準拠するように小文字で始めなければなりません。 @synthesizeディレクティブは、セッターとゲッターを生成するには、このに依存しています。このように、myButton@synthesizeため-(void)setMyButton:(UIButton *)button-(UIButton *)myButtonを生成します。

それは場合に役立ちますので、MyButtonとその同僚は小文字と見作るのですか。

あなたの-buttonClick:方法は次のように宣言する必要がありますので、

アクションメソッドは常に、送信者の引数を持っています:

-(IBAction) buttonClick: (id)sender {
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top