2011-09-28 105 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