2016-01-20 99 views
-3

我是begginer到iPhone,並已與5個按鈕的頁腳,我想禁用一次點擊按鈕,直到另一個按鈕被點擊(意味着一旦另一個按鈕被克服,那麼按鈕應該是重新啓用它)。我可以發佈我的代碼並希望得到幫助,請幫助我。如何禁用按鈕一旦點擊在iphone編程

代碼

 UIButton *btn = (UIButton *)sender; 
     NSInteger index= btn.tag; 
     [self setNavigationBarButtons:index]; 

     switch (btn.tag) 
     { 
      case 1: // all media type 
      { btn.enable=No; 
       messageToBeEdit =nil; 

      } 
       break; 
      case 2: // image type 
      { btn.enable=No; 
       messageToBeEdit = nil; 

      } 
       break; 
      case 3: // video type 
      { btn.enable=No; 
       messageToBeEdit = nil; 

      } 
       break; 
      case 4: // text type 
      { btn.enable=No; 
       // forth button 

       break; 
      } 
       break; 
      case 5: // audio type 
      {//fifth button 
btn.enable=No; 
       messageToBeEdit = nil; 

      } 
       break; 

我的問題是我不能能夠點擊一次,我點擊了它,我要重新啓用它一旦另一個按鈕被點擊。

+0

你可以用UISegmentedControl做到這一點 – raki

+0

@ raki-code ????? –

+0

@濃縮的H2SO4看看http://www.makemegeek.com/uisegmentedcontrol-example-ios/ – raki

回答

1
- (void) tapButton:(id)sender { 
    UIButton *btn = (UIButton *)sender; 
    NSInteger index= btn.tag; 
    [self setNavigationBarButtons:index] 

    //first enable all the other buttons 
    for(UIButton *b in [[btn superview] subviews]) { 
     if([b isKindOfClass:[UIButton class]]) { 
      b.enabled = YES; //reenable 
     } 
    } 

    btn.enabled = NO; //then disable tapped button 
} 

這裏您不需要switch這種情況,因爲您已經獲得點擊按鈕。

+0

不應該是'b.enabled' – UditS

+0

@UditS,感謝您的糾正,您是對的。它應該是「啓用」而不是「啓用」。 – Hemang

1

你需要保持所有的按鈕(例如Button1的,Button2的..等)

的引用在交換機的情況下,使所有其他按鈕。例如,如果用戶在Button1的挖掘,然後讓所有其他按鍵一樣

button2.enabled = YES; 
button3.enabled = YES; 
button4.enabled = YES; 
button5.enabled = YES; 

一個更好的方法是把所有的按鈕和環IBOutletCollection通過陣列,使所有其他按鈕。

+0

標籤很好,但禁用一個按鈕,你需要它的參考。標記不會幫助你。 – UditS

+0

'IBOutletCollection'是完成此方法的不錯選擇。 +1 – Hemang