cao xiangyu cao xiangyu - 1 year ago 182
iOS Question

How to reset pedometer to 0 in Swift? I am using CMPedometer()

I want to add a button in my app and reset the pedometer to 0 by pressing it. Now I just finish a common pedometer, my code is below:

@IBOutlet weak var step: UILabel!

var days:[String] = []
var stepsTaken:[Int] = []
let activityManager = CMMotionActivityManager()
var pedoMeter = CMPedometer()

override func viewDidLoad() {

var cal = Calendar.current
var comps = cal.dateComponents([.year, .month, .day, .hour, .minute, .second], from: Date())
comps.hour = 0
comps.minute = 0
comps.second = 0
let timeZone = NSTimeZone.system
cal.timeZone = timeZone
let midnight = comps)!


self.pedoMeter.startUpdates(from: midnight) { (data: CMPedometerData?, error) -> Void in
DispatchQueue.main.async(execute: { () -> Void in
if(error == nil){
self.step.text = "\(data!.numberOfSteps)"
} }

Answer Source

You cannot "reset the pedometer". It is a piece of hardware.

What you do is write software. No law says that you have to maintain or display as your count the same number that the pedometer is keeping as its count. Maintain your own separate count as an instance property.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download