Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implementing a Countdown Timer in Objective-c?

Tags:

I am new to iOS programming. I am working on words matching game. In this game I need to implement time counter which shows minutes and seconds. I want when my game is started my timer to start with 3 minutes. Now I want to decrease this timer in reverse direction with seconds. my code just work for seconds..here is my code:

  secondsLeft--;    int seconds = (secondsLeft %3600) % 60;    Timerlbl.text = [NSString stringWithFormat:@"%02d",seconds];     if (seconds==0)  {    UIAlertView *pAlert = [[UIAlertView alloc]initWithTitle:@"Sorry!!"     message:@"TimeOver"        delegate:self    cancelButtonTitle:@"OK"     otherButtonTitles:@"Cancel",nil];   [pAlert show];  [pAlert release];   }   } 

In Viewdidload i call it through timer..

          countDown=[NSTimer scheduledTimerWithTimeInterval:5.0 target:self                   selector:@selector(TimeOver) userInfo:nil repeats:YES]; 

pleas any one guide me how can i do it in both minutes and seconds.

like image 561
jamil Avatar asked May 19 '12 07:05

jamil


1 Answers

You can do it like this(ARC Enabled):-

@interface ViewController() { UILabel *progress;     NSTimer *timer;     int currMinute;     int currSeconds; } @end   @implementation ViewController - (void)viewDidLoad {     [super viewDidLoad];     progress=[[UILabel alloc] initWithFrame:CGRectMake(80, 15, 100, 50)];     progress.textColor=[UIColor redColor];     [progress setText:@"Time : 3:00"];     progress.backgroundColor=[UIColor clearColor];     [self.view addSubview:progress];     currMinute=3;     currSeconds=00;      // Do any additional setup after loading the view, typically from a nib. } -(void)start {     timer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFired) userInfo:nil repeats:YES];  } -(void)timerFired { if((currMinute>0 || currSeconds>=0) && currMinute>=0) {     if(currSeconds==0)     {         currMinute-=1;         currSeconds=59;     }     else if(currSeconds>0)     {         currSeconds-=1;     }     if(currMinute>-1)     [progress setText:[NSString stringWithFormat:@"%@%d%@%02d",@"Time : ",currMinute,@":",currSeconds]]; }     else     {         [timer invalidate];     } } 
like image 50
Abhishek Singh Avatar answered Jan 03 '23 02:01

Abhishek Singh