2010-08-15 3 views
1

У меня есть 2 кнопки на моем представлении, и я хочу отключить первую кнопку, когда я нажимаю на другую кнопку, и отключить вторую, когда я снова нажимаю кнопку.Как отключить несколько кнопок?

Я попытался с этим кодом

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

Так я имею в Панель навигации кнопка «+» и 5 кнопок на ограниченными мой взгляд. Когда я нажимаю кнопку «+» Я хочу, чтобы включить первую кнопку и когда я нажимаю еще раз, что позволит второй ...
Благодаря

+0

Как этот код отключает любые кнопки? – 2010-08-15 20:16:03

+0

Можете ли вы предоставить дополнительную информацию? Трудно понять, что вы пытаетесь задать здесь ... – Jasarien

ответ

0

Вы говорите,

if (button1.enabled = NO) { 

, когда вы, вероятно, означает

if (button1.enabled == NO) { 

= - оператор присваивания, а == - оператор булевого равенства. То, что вы делаете в данный момент, назначает YES кнопке button.nable, что, очевидно, позволяет button1. Затем, поскольку button.enable истинно, управление вводит условие if и включает кнопку button2.

EDIT: Чтобы ответить на ваш новый вопрос («Когда я нажимаю кнопку« + », я хочу включить первую кнопку, а когда я нажму снова, чтобы включить второй ...»), предположим, что вы инициализируете кнопку где-то. В вашем @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 Внутри обработчика событий до plusPressed:. Тогда вы бы

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

Каждый раз, когда plusPressed: называется, следующая кнопка в массиве будет включен. (Я пишу выше от компилятора, могут быть синтаксические ошибки.)

Вы также можете сделать buttons недвижимость. Я не сделал этого, потому что другие классы не имеют доступа к buttons.

+0

okok спасибо, я попробую – Alex

+0

за вашу помощь! , но я не понимаю, где я должен поставить этот код ... – Alex

+0

спасибо, но когда я добавить код у меня есть ошибки «Ожидаемое выражение до„UIButton“для линии » Еогеасп (UIButton * каждый в Buttons) еще раз спасибо – Alex

0

button1.enable = YES должен быть button1.enable == YES

лучше машиночитаемой форме: [button1 isEnabled]

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

Это то, что ищете? Это будет IBAction для другой кнопки.

Смежные вопросы