1

ボタンの色を切り替えるボタンを作ろうとしています。何らかの理由で、以下のコードが機能しません...

**//Header (.h)**
    @property UIColor *imageColor1;
    @property UIColor *imageColor2;    
    @property UIButton *button1;
    @property UIButton *button2;    
    @property CGRect viewBounds;
    -(IBAction)changeColor:(id)sender;    
    -(IBAction)createButton;

**//Implementation (.m)**
    @synthesize imageColor1;
    @synthesize imageColor2;
    @synthesize button1;
    @synthesize button2;
    @synthesize viewBounds;

    -(IBAction)createButton{
        self.viewBounds = self.view.bounds;

        self.button1 = [UIButton buttonWithType:UIButtonTypeCustom];
        self.button1.frame = CGRectMake(CGRectGetMidX(self.viewBounds)-30, CGRectGetMidY(viewBounds)-15, 60, 30); 
        self.button1.backgroundColor = self.imageColor1;
        [self.view addSubview:button1];

        self.button2 = [UIButton buttonWithType:UIButtonTypeCustom];
        self.button2.frame = CGRectMake(CGRectGetMidX(self.viewBounds)-15, CGRectGetMidY(viewBounds)-30, 30, 60); 
        self.button2.backgroundColor = self.imageColor2;          
        [self.view addSubview:button2];

    }

    -(IBAction)changeColor:(id)sender{

       int changeCount = 0;
       int changeCount1 = 1;
       NSArray *colors = [[NSArray alloc] initWithObjects:[UIColor redColor],[UIColor blueColor],[UIColor yellowColor],[UIColor                  magentaColor],[UIColor greenColor],[UIColor orangeColor],[UIColor purpleColor], nil];
       if(changeCount < 7){
          imageColor1 = [colors objectAtIndex:changeCount];
       }
       else{
          changeCount = changeCount - 5;
          imageColor1 = [colors objectAtIndex:changeCount];
       }
       if(changeCount1 < 7){
          imageColor2 = [colors objectAtIndex:changeCount1];
       }
       else{
          changeCount1 = changeCount1 - 5;
          imageColor2 = [colors objectAtIndex:changeCount1];
       }
       changeCount++;
       changeCount1++;
    }

基本的に、ユーザーが「色の変更」ボタンをタップするたびに、変数changeCountchangeCount1のカウントが増加し、 と の値self.imageColor1self.imageColor2配列内の後続の値に変更されますcolors。何らかの理由で、このコードは機能せず、色が変わりません。このcreateButton方法は、押すたびに新しいボタンが表示されるため機能しますが、ボタンを作成してから色変更ボタンを押してから別のボタンを作成すると、新しいボタンの色は同じままです。したがって、基本的には、コードの何が問題なのかを知る必要があります。前もって感謝します。

4

1 に答える 1

2

これは、changeCount 変数と changeCount1 変数を毎回リセットするためです。それらを再作成し、最初に 0 と 1 に設定したことに注意してください。もちろん、彼らは決して変わることはありません。それらを静的変数であるかのように作成していますが、そうではありません。それらはローカル変数です。NSArray は静的である可能性がありますが、カウント変数はメンバー変数 (つまり、インターフェイスで定義) として使用する方が適切です。

于 2012-06-08T01:47:21.117 に答える