我有一个弹出视图,当用户点击带有Core Data元素的TableView时会加载该视图。在弹出视图中,我有一个表示int值的标签。
弹出视图有两个按钮,一个用于将标签的值减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 :(得分: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);
}
答案 1 :(得分: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
}
答案 2 :(得分:0)
我只想使用UIStepper,而不是2个按钮。您可以在storyboard / IB文件中设置属性,指定max和min,增量以及一堆其他有用的东西。在YouTube上发布了一些视频教程,可能涵盖了使用它时需要了解的所有内容。
答案 3 :(得分:0)
另外,我注意到有一件事...... 如果按钮处于禁用状态并且您正在尝试更改正常状态的标题,则它将无法工作。 我必须将状态更改为启用,然后我可以操纵标题并重新设置为禁用。