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 回答