倒数计时器,停止并重设为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
你的代码目前从0开始的计时器,减小它,然后检查它,它已经达到了60显然那不会发生。
如果你想开始在60和0停止,那么你需要设置timeTick
到60
在viewDidLoad
并为您在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];
@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];
}
}
我试过了,但它仍然不停止att 0并得到重置。我更新了我使用的代码 –
@TeoOhlsson。已编辑,现在工作正常。 –
香港专业教育学院尝试过,但它仍然没有停止ATT 0,并得到复位。我更新了我使用的代码 –
这是因为您正在检查'tick> = 0'。你想检查'tick rmaddy
这没有任何区别。它就像定时器永远不会进入“if”语句 –