2014-12-08 2 views
-1

iOS 용 스톱워치 앱을 만들고 있습니다. 앱을 만들면 시간이 초 단위로 표시되므로 문제가되지 않습니다. 이제는 분과 초 단위로 시간을 표시하도록 변경하려고합니다. 예를 들어 1 분 20 초 동안 1:20으로 표시합니다. 위를 달성하기 위해, 나는 다음과 같은 한 :if 문에서 카운터 계속

import UIKit 
class ViewController: UIViewController { 
    var timer = NSTimer() 
    var seconds:Int = 0 

@IBOutlet weak var timerOutput: UILabel! 
@IBAction func startButton(sender: AnyObject) { 

    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true) 
} 
@IBAction func stopButton(sender: AnyObject) { 

    timer.invalidate() 

} 
@IBAction func resetButton(sender: AnyObject) { 

    timer.invalidate() 
    seconds = 0 
    timerOutput.text = "\(seconds)" 

} 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    timerOutput.text = "0:\(seconds)" 
} 
func result() { 
    seconds++ 
    if seconds <= 60 { 

     timerOutput.text = "0:\(seconds)" 

    } else { 
     if seconds > 60 { 

      var minutes:Int = seconds/60 
      var newSeconds = minutes % seconds 
      timerOutput.text = "\(minutes):\(newSeconds)" 
     } 
    } 
} 
override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
    } 
} 

문제는 앱이 초 후에 카운터를 계속하지 않는 경우 I 60 초 후에 발생하는 정의 문. 나는 for 및/또는 while 문을 사용하는 것에서 초> 60 동안 완전히 새로운 함수를 만드는 것에 이르기까지 많은 것들을 시도했지만 아무 것도 작동하지 않는 것 같다. 현재 앱은 0:60까지 완벽하게 진행되어 1 : 1로 보여줍니다. 지금까지는 그렇게 좋았고 아무 것도하지 않았습니다. 그런 다음 1 분마다 업데이트되어 2 : 2, 3 : 3, 4 : 4 등으로 표시됩니다.

감사합니다.

답변

0

newSeconds 수학은 다음과 같이해야합니다 :

// number of seconds in a minute, not the number of seconds currently 
var newSeconds = seconds % 60 
+1

내 부분에 오른쪽 바보 같은 실수입니다. 이 아니어야합니다. var newSeconds = 초 % 60 – sar91

+0

예. 내 부분에 어리석은 실수 :) – keithbhunter

+0

그래, 그게 다야. 그것은 지금 잘 작동합니다, 나는 그런 바보 같은 일에 3 시간 이상을 보냈습니다. 어쨌든 고마워! – sar91