[英]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.