2017-07-29 11 views
-2

現在、uistepperをインクリメントして現在の値に基づいてその値を変更しようとしています。 uistepperはタイムキーパーとして行動するはずです。それは60分に達するまで5分ずつ増分し、60分増分します。 120分に達すると、私はステッパーを1440分増やして1日にします。しかし、私のコードには問題があります。もう1つの問題は、ステッパーを減らして1日から1時間に戻ってから数分に戻すことです。分、時間、日などに基づいてUIStepperの値を増やします。SWIFT

これが今の私のコードです:

func stepperValueChanged(stepper: UIStepper) { 
    var value = Int(stepper.value) 
    stepper.minimumValue = 0 
    if (stepper.value != 0 && stepper.value <= 60) { 
     stepper.stepValue = 5 
     stepper.value -= 5 
     stepper.value += 5 
     value = Int(stepper.value) 
     reminderSubLabel.text = "\(value) minutes before" 
     if stepper.value == 60 { 
     reminderSubLabel.text = "\(value/60) hour before" 
     } 
    } else if stepper.value >= 60 && stepper.value <= 180 { 
     if stepper.value == 60 { 
      reminderSubLabel.text = "\(value/60) hour before" 
      stepper.value -= 5 
      stepper.value += 60 
     } else { 
     //stepper.value = 120 
     value = Int(stepper.value/60) 
     stepper.stepValue = 60 
     stepper.value -= 60 
     stepper.value += 60 
     reminderSubLabel.text = "\(value) hours before" 
     } 
     if stepper.value == 120 { 
      stepper.value = 1440 
      stepper.value -= 1320 
      stepper.value += 1440 
      //stepper.stepValue = 1320 
     } 
    } 
    if stepper.value == 0 { 
     stepper.stepValue = 5 
     stepper.value = 0 
     reminderSubLabel.text = "At the time of the event" 

    } 
    stepper.minimumValue = 0 
    stepper.maximumValue = 20160 
    print("\(stepper.value)") 
} 
+1

あなたは深刻な設計上の問題があります。 –

+0

"stepper.value = 5"で、次の行 "stepper.value = 0"にあります。これは他の場所でも行います。それの目的は何ですか?ステッパーの値を5に代入してから0にするのはなぜですか? –

+0

@ElTomatoあなたのアプローチは何ですか?私はコードが乱雑で反復的であると理解しています。私はちょうど助けを求めています。 – ayjoy

答えて

1

あなたはUIStepperの値プロパティにバインドするべきではありません。ソートの抽象的な使用を試してください。ステッパーの値はxで、分単位で必要な値はyです。必要なのは、stepperValueChanged(stepper :)にy = f(x)を実装することだけです。ステップが1の場合はかなり簡単です。

var minutes = 0 

@IBAction func stepperValueChanged(_ stepper: UIStepper) { 
    let value = Int(stepper.value) 
    var minutes = 0 
    for step in 0..<value { 
     if step <= 11 { 
      minutes += 5 
     } else if step <= 12 { 
      minutes += 60 
     } else { 
      minutes += 1440 
     } 
    } 
    self.minutes = minutes 
} 
関連する問題