2010-08-15 54 views
1

我在我的視圖上有2個按鈕,我想禁用第一個按鈕,當我點擊另一個按鈕時禁用第二個,當我再次點擊按鈕。如何禁用多個按鈕?

我曾嘗試使用此代碼

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

所以我有一個導航欄爲「+」按鈕,在我看來,5個禁用按鈕。 當我按下「+」按鈕,我要啓用的第一個按鈕,當我再次推,使第二...
感謝

+0

該代碼如何禁用任何按鈕? – 2010-08-15 20:16:03

+0

你能提供更多信息嗎?很難理解你在這裏想問什麼...... – Jasarien 2010-08-15 20:16:41

回答

0

你說

if (button1.enabled = NO) { 

當你大概是這個意思

if (button1.enabled == NO) { 

=是賦值運算符,而==是布爾相等運算符。你現在在做的是將YES分配給button1.enable,這顯然啓用了button1。然後,由於button.enable爲true,控件將輸入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

+0

okok謝謝我試試 – Alex 2010-08-15 20:23:40

+0

感謝您的幫助! 但我不明白我必須把代碼放在哪裏... – Alex 2010-08-16 12:05:09

+0

謝謝你,但是當我添加的代碼我有一個錯誤 「‘的UIButton’之前預計表達式行 」的foreach(UIButton的*每個按鈕) 再次感謝 – Alex 2010-08-16 13:04:10

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。