2011-09-28 72 views
0

我有麻烦一个小一点试图让这段代码的工作显示。我收到了一些与此代码相关的答案,但它解决了一个不同的问题。计算和标签

基本上两件事出于测试目的,我想看到这里正常工作。当我尝试显示dist时,我希望它实际获得在文本字段中输入的数字。目前我输入的东西是零。 (我将它设置为双打,因为通常可能会使用双打)。另一件事是当我把timePassed放到显示屏上而不是dist时,它会出现一个严重的数字,这应该是这两个按钮之间传递的时间量。我不知道为什么,但它通常显示一个负数,并且数字稍微偏高。任何想法或帮助总是感激。 (我试图让它们正确地显示在屏幕上,因为一旦我知道它们工作正常,我就可以将它们放入计算中并进行计算显示)。

-(IBAction)triggerDown:(id)sender{ 
    [timeStart release]; 
    timeStart = [[NSDate alloc] init]; 


} 

-(IBAction)triggerUp:(id)sender{ 
    double calc, dist; 
    int mph; 
    NSString *display; 
    NSTimeInterval timePassed = [timeStart timeIntervalSinceNow]*1000; 
    if ([distance.text length]== 0) { 
     display = @"Please enter a distance"; 
    } 
    else{ 
     dist = [distance.text doubleValue]; 
     display = [[NSString alloc] initWithFormat:@"%d MPH",dist]; 


    } 
    speed.text = display; 


    [display release]; 
} 

只要你明白发生了什么。当按下triggerDown时,它是一个传递开始时间的按钮。然后,当同一个按钮被释放时,triggerUp按钮被调用,它应该得到两者之间传递的时间以及进行计算。 (计算尚未写入)。

回答

1

关于负(和模量太大)时间:你timeStart是过去,所以当你[timeStart timeIntervalSinceNow]你会得到一个负的区间。由于timeStart将始终成为过去,你可以乘以-1的间隔,以获得正数。 此外,当您将时间间隔乘以千分之一时,您将秒数转换为千分之一秒 - 您需要将时间分为几毫秒。

至于在显示器上显示0 - 尝试文本字段的值设置为直接在标签:speed.text = distance.text。它会起作用吗?如果没有,请确保文本字段连接到插座(“距离”)。

+0

谢谢。我试图得到的实际时间是毫秒。所以我应该做/ -1000或* -1000或只是* -1?至于另外一个,我会给出一个镜头。谢谢:) – steven

+0

哦,至于另一个。如果我能把它展示出来,这并不重要。我主要担心的是,我将能够使用textfields输入将其转换为数字,以便我可以将其用于计算。它看起来会从远处获得输入并将其转换为dist中的双倍数? – steven

+0

哦,如果你想以毫秒显示时间,那么* -1000是正确的,对不起,我不明白。在文本上调用doubleValue应该会得到数字值,是的 - 但请注意,它会很容易受到输入中的用户错误的影响,所以您可能需要考虑使用选择器控件来选择值。 – SVD