- NSTimer not working on StopWatch App ONLY ON SIMULATOR (Shows static strange number)
- #import <UIKit/UIKit.h>
- @interface ViewController : UIViewController
- {
- NSTimer *stopWatchTimer;
- NSDate *startDate;
- }
- @property (strong, nonatomic) IBOutlet UILabel *stopWatchLabel;
- - (IBAction)startButtonTapped:(id)sender;
- - (IBAction)stopButtonTapped:(id)sender;
- -(void)updateTimer;
- @end
- - (IBAction)startButtonTapped:(id)sender {
- stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
- target:self
- selector:@selector(updateTimer)
- userInfo:nil
- repeats:YES];
- }
- - (void)updateTimer
- {
- NSDate *currentDate = [NSDate date];
- NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
- NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
- NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
- [dateFormatter setDateFormat:@"HH:mm"];
- [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
- NSString *timeString=[dateFormatter stringFromDate:timerDate];
- stopWatchLabel.text = timeString;
- }
- - (IBAction)stopButtonTapped:(id)sender {
- [stopWatchTimer invalidate];
- }
- - (IBAction)startButtonTapped:(id)sender {
- startDate = [NSDate date];
- stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
- target:self
- selector:@selector(updateTimer)
- userInfo:nil
- repeats:YES];
- }
- - (void)updateTimer
- {
- NSDate *currentDate = [NSDate date];
- NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
- NSInteger minutes = floor(timeInterval/60);
- NSInteger seconds = trunc(timeInterval - minutes * 60);
- NSString *timeString=[NSString stringWithFormat:@"%i:%02i", minutes, seconds];
- stopWatchLabel.text = timeString;
- }
- - (void)updateTimer
- {
- NSDate *currentDate = [NSDate date];
- NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
- NSDateComponents *components = [calendar components:NSSecondCalendarUnit|NSMinuteCalendarUnit fromDate:startDate toDate:currentDate options:0];
- NSInteger minutes = [components minute];
- NSInteger seconds = [components second];
- NSString *timeString=[NSString stringWithFormat:@"%i:%02i", minutes, seconds];
- stopWatchLabel.text = timeString;
- }