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];
}
}
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