ios - 倒数计时器停止并重置为 0

标签 ios objective-c timer nstimer

我的倒计时计时器出现问题,它不想从 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。显然这不会发生。

如果你想在 60 开始并在 0 停止那么你需要在 viewDidLoad 中将 timeTick 设置为 60 并检查一个值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];

关于ios - 倒数计时器停止并重置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45170083/

相关文章:

ios - 对多个容器设置约束

objective-c - AppDelegate 的当前 View Controller ?

ios - 在 Storyboard 中加载 ViewController

objective-c - 以编程方式触发 "detect displays."

ios - 用于本地化的字符串比较

timer - 使用Lua创建计时器

c# - 如果您在应用程序中使用 System.Timers.Timer,是否有必要处理它?

c# - System.Threading.TimerCallback 仅在使用 Entity Framework 时触发一次

ios - 在 UIAlertController 中居中 UITextField

ios - 我什么时候应该将 optional 值与 nil 进行比较?