2017-07-29 47 views
-2

我正在嘗試增加一個uistepper並根據其當前值更改其值。 uistepper應該是一名計時員。它會增加5分鐘,直到達到60分鐘,然後增加60分鐘。一旦達到120分鐘,我希望步進器增加1440分鐘,這是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(步進器:)中實現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 
}