Objective c 以编程方式更改UIButton的状态

Objective c 以编程方式更改UIButton的状态,objective-c,ios6,uibutton,Objective C,Ios6,Uibutton,我有一个弹出视图,当用户单击包含核心数据元素的TableView时,它会加载。在弹出视图中,我有一个表示int值的标签 弹出视图有两个按钮,一个用于将标签值减小1,另一个用于将标签值增大1。So+和- 如果标签的值为0,我要做的是禁用减号按钮。我试过的是: -(void)viewDidLayoutSubviews{ NSString *daString = currentVal.text; NSNumberFormatter * f = [[NSNumberFormat

我有一个弹出视图,当用户单击包含核心数据元素的TableView时,它会加载。在弹出视图中,我有一个表示int值的标签

弹出视图有两个按钮,一个用于将标签值减小1,另一个用于将标签值增大1。So+和-

如果标签的值为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。
有什么建议吗?

看来你的想法正好相反。我会采取完全不同的方法:

在这个保存数字的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);
}

我只需要一个按钮,而不是两个按钮。您可以在storyboard/IB文件中正确设置属性,指定最大值和最小值、增量以及其他一些有用的内容。网站上发布了一些视频教程,可能涵盖了使用它所需了解的所有内容。

您应该参考减号按钮,例如

@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
}

还有,我注意到一件事。。。 如果按钮处于禁用状态,而您正试图更改正常状态的标题,则该按钮将不起作用。
我必须将状态更改为enabled(已启用),然后才能操纵标题并将其设置回disabled(已禁用)。

这到底是怎么回事?它是否仍在接收触摸事件或看起来仍处于启用状态?