2017-07-18 85 views
0

我的倒数计时器不想从60倒数计时出现问题,并在达到0时重置。目前它只是将其标签设置为0,并开始倒计数到-1,2 -...我如何在iOS上使用xcode从60开始?倒数计时器,停止并重设为0

.m文件

#import "ViewController.h" 

@interface ViewController() 
{ 
    int timeTick; 
    NSTimer *timer; 
} 

@end 

@implementation ViewController 

- (IBAction)stopStartBtn:(id)sender { 
    [timer invalidate]; 

    timeTick = 3; 

    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(myTicker) userInfo:nil repeats:YES]; 
} 

-(void)myTicker{ 
    timeTick--; 

    NSString *timeString =[[NSString alloc] initWithFormat:@"%d", timeTick]; 
    self.display.text = timeString; 

    if(timer >= 0){ 
     [timer invalidate]; 
    } 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    timeTick = 3; 
} 

@end 

.h文件中

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 

    @property (strong, nonatomic) IBOutlet UILabel *display; 
    - (IBAction)stopStartBtn:(id)sender; 


    @end 

回答

1

你的代码目前从0开始的计时器,减小它,然后检查它,它已经达到了60显然那不会发生。

如果你想开始在60和0停止,那么你需要设置timeTick60viewDidLoad并为您在myTicker一个的0值。

并且不要忘记在您的viewDidLoad方法中致电[super viewDidLoad];

您还需要修复您的支票以查看您是否已达到零。现在你正在看timer指针而不是timeTick整数。

变化:

if(timer >= 0){ 
    [timer invalidate]; 
} 

到:

if (timeTick <= 0) { 
    [timer invalidate]; 
} 

你也永远不会设置你timer实例变量。你实际上设置了一个同名的局部变量。

变化:

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(myTicker) userInfo:nil repeats:YES]; 

到:

timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(myTicker) userInfo:nil repeats:YES]; 
+0

香港专业教育学院尝试过,但它仍然没有停止ATT 0,并得到复位。我更新了我使用的代码 –

+0

这是因为您正在检查'tick> = 0'。你想检查'tick <= 0'。 – rmaddy

+0

这没有任何区别。它就像定时器永远不会进入“if”语句 –

0
@interface Ovning1() 
{ 
    int timeTick; 
    NSTimer *timer; 
} 
@end 

@implementation Ovning1 


- (IBAction)stopStartBtn:(id)sender { 

    [timer invalidate]; 

    timeTick = 60; 

    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(myTicker) userInfo:nil repeats:YES]; 
} 

-(void)myTicker{ 

    timeTick--; 

    NSString *timeString =[[NSString alloc] initWithFormat:@"%d", timeTick]; 
    self.display.text = timeString; 


    if(timeTick <= 0){ 
     [timer invalidate]; 
    } 
} 
+0

我试过了,但它仍然不停止att 0并得到重置。我更新了我使用的代码 –

+0

@TeoOhlsson。已编辑,现在工作正常。 –