2011-10-15 21 views
35

我正在嘗試使用UIStepper來遞增或遞減整數, 但「 - 」和「+」都會增加整數!我怎樣才能識別「+」和「 - 」按鈕?如何使用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]]; 
    } 

} 

回答

102

你應該忽略的高德。他們不會幫助你。

UIStepper有一個value屬性,您可以查詢以確定當前值是什麼。所以,你的方法可能僅僅是:

- (IBAction)valueChanged:(UIStepper *)sender { 
    double value = [sender value]; 

    [label setText:[NSString stringWithFormat:@"%d", (int)value]]; 
} 
+0

感謝,但我有這個錯誤: '多個方法名爲'value'found'和'Initializing'double'帶有不兼容的表達式pe'NSString *'' –

+5

@ Mc.Lover確保變量是正確輸入或鑄造的。你需要確定它是明確的'UIStepper *'。將它聲明爲'id'是導致警告的原因。 –

+1

如果您確定發件人始終是UIStepper,您可以執行此操作[(UIStepper *)發件人值]。 –

-6

嘗試

stepper.maximumValue = 10.0; 
    stepper.minimumValue = 0.0; 
3

UIStepper返回Double值,用於迅速版本做到這一點:

@IBAction func stepperValue(sender: UIStepper) { print("the stepper value is :\(sender.value)") }

0

以UIStepper的出口:

@property (strong, nonatomic) IBOutlet UIStepper *stepper; 

在viewDidLoad方法:

self.stepper.wraps=YES; 

如果YES,從值分鐘<包裝 - >最大。默認=否

self.stepper.autorepeat=YES; 

如果是,請按&反覆保持更改值。默認= 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]; 
}