的NSTimer / NSTimeInterval

时间:2012-05-04 19:19:04

标签: nstimer nstimeinterval

我试图制作一个从30倒数到0的计时器,但这是我能想到让它工作的唯一方法,但它不起作用。谁知道我做错了什么?

.h文件

@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文件

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

}
}

1 个答案:

答案 0 :(得分:0)

你是否尝试过以实际应该编写的方式编写它? repeats参数完全出于此目的。您可以编写如下方法:

@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