我是编程的新手,我已经在以下问题上坚持了一段时间:
当我运行附加代码时,一切似乎都正常,然后进度条再次开始计数。控制台继续打印失效确认字符串,但计时器似乎继续滚动。感谢您的帮助。
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize doneYet;
@synthesize cooking;
@synthesize hidebutton;
- (void)viewDidLoad;
{
[super viewDidLoad];
[doneYet setProgress:doneYet.progress=0.0];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[self setDoneYet:nil];
[self setHidebutton:nil];
[self setCooking:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
-(void)startTimer
{CurrentTimer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFired) userInfo:Nil repeats:YES];}
-(void)timerFired
{ if (doneYet.progress<1) {
[doneYet setProgress:doneYet.progress+0.1];
}
else if (doneYet.progress=1)
{
(void) [CurrentTimer invalidate];
NSLog(@"invalidated CurrentTimer");
hidebutton.hidden = FALSE;
cooking.hidden = TRUE;
[doneYet setProgress:doneYet.progress=0.0];
}
}
- (IBAction)Eggtimer:(id)sender
{
[self startTimer];
hidebutton.hidden = TRUE;
cooking.hidden = FALSE;
;}
@end
答案 0 :(得分:3)
这似乎是一个问题
else if (doneYet.progress=1)
有两个原因:
==
而非=
(为赋值运算符)float
数字,这永远不会好,因为浮点数不准确,你应该检查progress >= 1.0
,否则你可以超过1.0(例如1.0000001)和跳过停止条件此外,在停止条件下,您可以
[doneYet setProgress:doneYet.progress=0.0];
但以前它应该是
[doneYet setProgress:0.0];
答案 1 :(得分:0)
我认为你应该这样做,retain
NSTimer
对象。
CurrentTimer=[[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFired) userInfo:Nil repeats:YES] retain];
答案 2 :(得分:0)
您可以做的一件事是将startTimer更改为
-(void)startTimer
{
[CurrentTimer invalidate];
CurrentTimer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFired) userInfo:Nil repeats:YES];
}
这将使旧计时器无效,并且只有一个计时器。
答案 3 :(得分:-1)
我的错误在于指定将startTimer命令为FirstResponder的按钮。
很抱歉对代码中没有错误的结果使用您的时间和建议。
再次感谢所有提出建议的人。这对初学者来说意义重大!