正确更改按钮状态和属性。

时间:2015-03-08 00:57:05

标签: ios objective-c button

在我的应用程序中,我有5个按钮。当firstButton.selected = YES;我需要其他人*.selected = NO;时。为其他四个按钮写“NO”是否是正确的解决方案?

如果我不清楚我的意思,这是一个示例代码:

- (IBAction)setColorRed:(id)sender {

            _redColor.selected = YES;
            _greenColor.selected = NO;
            _blueColor.selected = NO;
            _yeallowColor.selected = NO;
            _clearColor.selected = NO;
    }

2)问题的第二部分:

self.redColor setBounds:CGRectMake(0,0,45,45)];

有人可以用人类语言解释为什么我改变那些“0,0”按钮不改变它的位置?就像发送setFrame时一样。

3)问题的第三部分:

发件人是按钮。如果它是UITableViewCell的属性,[sender isSelected]如何工作?什么是“notSelected”的等价物?

提前多多感谢..

2 个答案:

答案 0 :(得分:1)

  1. 你应该把你的按钮放在一个数组中 - 然后你可以简单地跟踪所选的索引并按下一个按钮的方法并消除重复的代码。
  2. e.g。

    - (IBAction)buttonTapped:(UButton *)sender {
        for (UIButton *aButton in self.buttons) {
            if (aButton != sender) {
                aButton.selected=NO;
            }
        }
        sender.selected=YES;
     }
    
    1. Bounds是其自己坐标空间中的项目坐标,frame是其父坐标空间中的项目坐标。尝试在自己的空间中偏移项目的来源是没有意义的。
    2. '对面' isSelected只是检查`isSelected'的错误/无值。 -
    3. e.g。

      if (self.redColor.isSelected) {
            //The button isn't selected
      }
      

      最后,你应养成使用self.property而不是_property的习惯,除非你特别想绕过setter / getter。

答案 1 :(得分:1)

  1. 没关系,五个按钮不是太靠近你自己。我不确定你要做什么。

  2. 由于您正在设置已有位置的对象的边界,因此位置不会更改。当您设置将设置位置的帧时,边界将基于您创建的帧。这是good explanation

  3. 发件人是用来调用该方法的任何东西,是一个按钮或一个单元格或者你选择的任何东西。没有这样的东西是“未选择”它只是.selected = NO而“selected”是.selected = YES。

  4. 如果您需要更多说明,请告诉我。