問題是停止的NSTimer,出於某種原因[計時器失效]只是不工作...不能作廢,停止倒計時的NSTimer - 目標C
也許我的眼睛充滿了肥皂,但無法理解之所以計時器並沒有停止在0,但去扭轉計數-1,-2,-3等等...(((
我使用的是劃時代的數字作爲目標日期。還有一件事 - 我的按鈕「IBAction停止」與[定時器無效]工作得很好 - 當我推它在模擬器計時器停止時...
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
Timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES];
}
- (IBAction) start {
Timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES];
}
- (IBAction) stop {
[Timer invalidate];
Timer = nil;
}
-(void)updateLabel {
NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
int units = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *components = [calender components:units fromDate:[NSDate date] toDate:destinationDate options:0];
[dateLabel setText:[NSString stringWithFormat:@"%d%c %d%c %d%c %d%c", [components day], 'd', [components hour], 'h', [components minute], 'm', [components second], 's']];
destinationDate = [NSDate dateWithTimeIntervalSince1970:1355299710];
if (!destinationDate) {
[Timer invalidate];
Timer = nil;
}
}
如果(destinationDate!){ - >始終是正確的,因爲如果變量被實例化,只檢查,所以如果從未失效計時器那裏。也就是你永遠不會進入你的inst inside的內心。你應該重做你的ifstatement並且會很好。 –
好吧,我覺得有一些與if語句,但我嘗試了很多方法 - 不只是目的地的日期,但「dateLabel.text <= 0」仍然沒有好... –
dateLabel.text是一個NSString和你不能比較到一個像0這樣的int。在這種情況下,您將不得不添加dateLabel.text.lenght。你的ifstatements不完整。 –