0

Im trying to make a timer that counts down from 30 to 0 but this is the only way i could think to make it work, but it doesn't work. Anyone know what im doing wrong?

.h file

@interface countDownAppViewController : UIViewController {

UIButton *countDown;
UILabel *displayThis;
}

@property (nonatomic, retain) IBOutlet UIButton *countDown;
@property (nonatomic, retain) IBOutlet UILabel *displayThis;

-(IBAction) theCount:(id) sender;
-(IBAction) displayStuff:(id) sender;

@end

.m file

@synthesize countDown;
@synthesize displayThis;

-(IBAction) theCount:(id) sender    {
[NSTimer scheduledTimerWithTimeInterval:1.0
                                 target:self
                               selector:@selector(displayStuff:)
                               userInfo:nil
                                repeats:NO];

}
int batman=30;
-(void) viewDidLoad{

displayThis.text = [NSString stringWithFormat:@"%i",batman];
}

-(IBAction) displayStuff:(id) sender    {
while (batman >= 0){
    batman--;
    [NSTimer scheduledTimerWithTimeInterval:1.0
                                     target:self
                                   selector:@selector(displayStuff:)
                                   userInfo:nil
                                    repeats:NO];
displayThis.text = [NSString stringWithFormat:@"%i",batman];

}
}
nfoggia
  • 513
  • 1
  • 8
  • 28

1 Answers1

0

Have you tried writing it the way it actually should have been written? The repeats argument is there exactly for this purpose. You can write a method like this:

@interface Whatever: UIViewController
{
    NSTimer *timer;
    int count;
    int maxCount;
}

- (void)countDownFrom:(int)cnt;

@end

@implementation Whatever

- (void)countDownFrom:(int)cnt
{
    maxCount = cnt;
    count = 0;
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                 target:self
                               selector:@selector(doCount)
                               userInfo:nil
                                repeats:YES];
}

- (void)doCount
{
    count++;
    textField.text = [NSString stringWithFormat:@"Count: %d", count];
    if (count >= maxCount)
    {
        [timer invalidate];
    }
}

@end