如何禁用多个按钮?

时间:2010-08-15 20:12:59

标签: ios objective-c cocoa-touch uibutton

我的视图中有2个按钮,我想在我点击另一个按钮时禁用第一个按钮,当我再次单击按钮时禁用第二个按钮。

我尝试过这段代码

if (button1.enable = NO) {
    button2.enable = NO;
}

所以我在NavigationBar中有一个“+”按钮,在我的视图中有5个禁用按钮。 当我按下“+”按钮时,我想启用第一个按钮,当我再次按下时,启用第二个按钮...
感谢

3 个答案:

答案 0 :(得分:3)

if (button1.enabled == YES)
{
     button1.enabled = NO;
     button2.enabled = YES;
}
else (button2.enabled == YES)
{
     button2.enabled = NO;
     button1.enabled = YES;
}

这就是你要找的东西吗?这将是另一个按钮的IBAction。

答案 1 :(得分:0)

你在说

if (button1.enabled = NO) {

当你可能意味着

if (button1.enabled == NO) {

=是赋值运算符,==是布尔等于运算符。你现在正在做的是为button1.enable分配YES,这显然启用了button1。然后,因为button.enable为true,所以control输入if的子句并启用button2。

编辑:回答你的新问题(“当我按下”+“按钮时,我想启用第一个按钮,当我再次按下启用第二个按钮时......),让我们说你初始化按钮状态某处。在@interface中添加一个实例变量

NSArray *buttons;

所以你的界面声明看起来像

@interface YourViewController: UIViewController {
  IBOutlet UIButton *button1;
  IBOutlet UIButton *button2;
  IBOutlet UIButton *button3;
  IBOutlet UIButton *button4;
  IBOutlet UIButton *button5;
  NSArray *buttons;
}

然后像这样初始化buttons

-(void)viewDidLoad {
  [super viewDidLoad];
  buttons = [NSArray arrayWithObjects: button1, button2, button3, button4, button5, nil];
  [buttons retain];
  for (UIButton *each in buttons) {
    each.enabled = NO;
  }

-(void)viewDidUnload {
  [buttons release];
  [super viewDidUnload];
}

假设您将+按钮的Touch Up Inside事件处理程序连接到plusPressed:。那你就有了

-(IBAction)plusPressed: (id) button {
  for (UIButton *each in buttons) {
    if (!each.enabled) {
      each.enabled = YES;
      break;
    }
  }
}

每次调用plusPressed:时,都会启用数组中的下一个按钮。 (我正在编写上面的编译器;可能存在语法错误。)

你也可以将buttons作为财产。我没有,因为其他类没有业务访问buttons

答案 2 :(得分:0)

button1.enable = YES应为button1.enable == YES

更易读的形式:[button1 isEnabled]