2017-01-21 45 views
0

我有一個tableview,每10秒刷新一次新的double值,我需要一種機制來比較當前值和以前的值,但是我沒有正確地做到這一點。Objc如何在tableview單元格中比較當前值和前一個double值

這是我現在擁有的。你能否建議如何存儲當前/以前的值,以在刷新後得到比較結果。你的情況在tempDictionary - 提前

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell; 

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierCell forIndexPath:indexPath]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierCell]; 
    } 

    Value = [[tempDictionary objectForKey:@"value"] doubleValue]; 
    if (ValueCurrent > ValuePrevious && ValuePrevious !=0.0) { 
     Label.backgroundColor = [UIColor greenColor]; 
    } 
    if (ValueCurrent < ValuePrevious) { 
     Label.backgroundColor = [UIColor redColor]; 
    } 
    ValuePrevious = Value; 


    return cell; 

} 
+0

'cellForRowAtIndexPath'對於任何與單元格顯示沒有直接關係的邏輯來說都是錯誤的地方。特別是'ValuePrevious = Value;'在該位置絕對是錯誤的。並且請更改所有變量以小寫字母開頭。 – luk2302

回答

1

在我的腦海THX所有這些檢查應該在模型級進行。如果新值與字典更新時的上一個值不同,則將另一個鍵「更改」並設置爲@(YES),否則將其設置爲@(否)。

然後你可以在cellForRowAtIndexPath中檢查這個值:並設置背景顏色。

+0

我同意這是最好的做法。我會盡力去做,看看它是如何發展的。雖然我猜測應該存在一個更簡單的方法....謝謝你指出 – ReaLity

0

首先,我不確定是否需要比較每個單元格的新值與之前的值。如果您需要將新值與每個單元格的先前值進行比較,則必須分別爲先前值和當前值創建NSArray,NSDictionary,然後將它們分別與各個單元格進行比較。

如果您只想比較UITableView重新加載時只有一個值,那麼您不應該在cellForRowAtIndexPath中比較它,而應當在致電[tableView reloadData]時比較它。

希望它有幫助!

+0

謝謝,我知道它應該存在於較低級別的支票,但我有機器人尚未完全弄清楚。謝謝 – ReaLity

相關問題