簡體   English   中英

倒數計時器將停止並重置為0

[英]Countdown timer that stops and reset on 0

我的倒數計時器遇到了一個問題,誰不想從60開始倒數​​,並在達到0時重置。 目前,它只是將其標簽設置為0,然后開始遞減為-1、2-。...如何在xcode上的iOS上從60開始?

.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

您的代碼當前將計時器從0開始,將其遞減,然后檢查其是否已達到60。顯然,這不會發生。

如果timeTick 60開始並在0處停止,則需要在viewDidLoad中將timeTick設置為60並在myTicker檢查值0

並且不要忘記調用[super viewDidLoad]; 在您的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];
@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];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM