2017-07-18 96 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。已編輯,現在工作正常。 –