2013-03-06 86 views
0

我有一個彈出視圖,在用戶單擊帶有Core Data元素的TableView時加載。在彈出視圖中,我有一個表示int值的標籤。以編程方式更改UIButton的狀態

彈出視圖有兩個按鈕,一個用於將標籤的值減1,另一個用於增加1。所以,+和 -

我想要做的是禁用減號按鈕,如果標籤的值是0。我已經試過是:

-(void)viewDidLayoutSubviews{ 
    NSString *daString = currentVal.text; 
     NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
     [f setNumberStyle:NSNumberFormatterDecimalStyle]; 
     NSNumber * myNumber = [f numberFromString:daString]; 
     int number = [myNumber intValue]; 
     if (number==0) 
      minus.enabled = NO; 
     else 
      minus.enabled = YES 
} 

我的代碼的問題是,按鈕住宿我在增加標籤的值後停用,並且不再等於0. 有什麼建議嗎?

+0

這究竟是怎麼回事?它仍在接收觸摸事件還是看起來仍然啓用? – 2013-03-06 14:49:18

回答

1

您應該保留對減號按鈕的引用,例如,

@property (strong, nonatomic) IBOutlet UIButton *minusButton; 

與減號按鈕的值設置它,或者在Interface Builder在plusButton你的行動處理器連接插座

,做這樣的事情

-(IBAction)plusAction:(id)sender { 
    //Do your business logic 
    ... 
    self.minusButton.enabled = YES; 
} 
//In your minusButton action handler 
-(IBAction)minusAction:(id)sender { 
    //Do your business logic 
    ... 
    NSString *daString = currentVal.text; 
    NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
    [f setNumberStyle:NSNumberFormatterDecimalStyle]; 
    NSNumber * myNumber = [f numberFromString:daString]; 
    int number = [myNumber intValue]; 
    if (number==0) 
     self.minusButton.enabled = NO; 
    else 
     self.minusButton.enabled = YES 
} 
1

看起來好像你有相反的事情。我會採取一種完全不同的方法:

在包含該數字的viewController中保留一個實例變量(我們稱其爲'count')。它可以是一個NSInteger。現在用@selector(buttonPressed :)將一個目標(self)添加到兩個按鈕。現在這是這個選擇應該什麼樣子:

- (void)buttonPressed:(id)sender{ 
    if (sender==plusButton) 
     self.count++; 
    if (sender==minusButton) 
     self.count--; 
    label.text = [NSString stringWithFormat:@"%d",self.count]; 
    minusButton.enabled = (self.count>0); 
} 
0

我只想做一個UIStepper,而不是2個按鈕。您可以在故事板/ IB文件中設置屬性,指定最大值,最小值,增量以及其他一些有用的東西。有幾個視頻教程發佈在YouTube上,可能涵蓋了您需要了解的所有信息。

0

而且,我注意到有一件事是... 如果按鈕處於禁用狀態,並且您試圖更改標準狀態的標題,則無法正常工作。 我不得不將狀態更改爲啓用,然後我可以操縱標題並將其設置爲禁用。

相關問題