我正在尝试使用UIStepper
来递增或递减整数,
但是“ - ”和“+”都会增加整数!如何识别“+”和“ - ”按钮?
在UIStepper
标头文件中有两个UIButton
s:
UIButton *_plusButton;
UIButton *_minusButton;
例如:
- (IBAction)changeValue:(id)sender
{
UIStepper *stepper = (UIStepper *) sender;
stepper.maximumValue = 10;
stepper.minimumValue = 0;
if (stepper)
{
integer++;
[label setText:[NSString stringWithFormat:@"%d",integer]];
}
else
{
integer--;
[label setText:[NSString stringWithFormat:@"%d",integer]];
}
}
答案 0 :(得分:103)
你应该忽略ivars。他们不会帮助你。
UIStepper
具有value
属性,您可以查询该属性以确定当前值是什么。所以你的方法可能只是:
- (IBAction)valueChanged:(UIStepper *)sender {
double value = [sender value];
[label setText:[NSString stringWithFormat:@"%d", (int)value]];
}
答案 1 :(得分:3)
UIStepper返回Double值,对于swift版本,请执行以下操作:
@IBAction func stepperValue(sender: UIStepper) {
print("the stepper value is :\(sender.value)")
}
答案 2 :(得分:2)
走UIStepper的出口:
@property (strong, nonatomic) IBOutlet UIStepper *stepper;
在viewDidLoad方法中:
self.stepper.wraps=YES;
如果是,则值从min< - >包裹。最大。默认=否
self.stepper.autorepeat=YES;
如果是,请按&坚持多次改变价值。默认=是
将初始值设为0。
NSUInteger value= self.stepper.value;
self.label.text= [NSString stringWithFormat:@"%02lu",(unsigned long)value];
设置最大值
self.stepper.maximumValue=50;
采取UIStepper的行动:
- (IBAction)valueDidChanged:(UIStepper *)sender {
//Whenever the stepper value increase and decrease the sender.value fetch the curent value of stepper
NSUInteger value= sender.value;
self.label.text= [NSString stringWithFormat:@"%02lu",value];
}
答案 3 :(得分:0)
我认为在Xcode 11.2中不可能出现这样的错误。但是,如果您在搜索“如何使用步进器”中找到了该主题,则可以找到答案:
1)。在情节提要板上创建一个步进器,一如既往地控制拖动它。它应该创建一个引用出口。
2)。您需要一个与此特定步进器相连的函数,其参数为sender:UIStepper。应该是
@IBAction func stepperValueChange(_ sender: UIStepper) {}
3)。现在,写出执行该功能时(每次按下步进器时)应该发生的情况。为了便于说明,请使用标签。控制权一如既往地拖他。下面是该函数中的内容,当踩下步进器时将执行此行。
valueLabel.text = Int(sender.value).description
就是这样。
P.S。 步进具有“特殊能力”,即:
->自动重复方式-按住步进可以快速增加计数器。真假 ->换行-值在“圆”中。低于最小值将得到最大的价值。超过最大的-您降至最低的。步进器以某种方式循环。 -> isContinuous。最好使其始终为真。
可以通过在“属性”检查器中选择这些属性来更改这些属性。
也供参考: https://www.ioscreator.com/tutorials/stepper-ios-tutorial
答案 4 :(得分:-6)
尝试
stepper.maximumValue = 10.0;
stepper.minimumValue = 0.0;