2014-02-18 54 views
1

我有一個iOS應用程序,顯示CPTBarPlot。我的酒吧情節通過更改觸摸酒吧的顏色來響應觸摸。我通過跟蹤barWasSelectedAtRecordIndex中最後一個選定欄的索引來完成此操作,然後將barFillForBarPlot中選定欄的顏色設置爲與其他顏色不同。這工作正常,但似乎我必須調用reloadData每次所選的欄更改爲了使新的填充顏色生效。這需要很長的時間,因爲有大量的數據,使應用程序感覺呆滯。CPTBarPlot:更改欄填充顏色後是否需要調用reloadData?

爲了改變一個條的顏色,重新加載所有的數據似乎很浪費,所以我希望有一個更好的方法,或者我只是在做一些愚蠢的事情。

下面是相關代碼的簡化版本:

-(void)barPlot:(CPTBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)idx 
{ 
    self.selectedIndex = idx 

    // Do I have to do this?? 
    [self reloadData]; 
} 



-(CPTFill *)barFillForBarPlot:(CPTBarPlot *)barPlot recordIndex:(NSUInteger)index 
{ 
    CPTFill *barFill = nil; 
    if (index == self.selectedIndex) 
    { 
     barFill = [CPTFill fillWithColor:redColor]; 
    } 
    else 
    { 
     barFill = [CPTFill fillWithColor:blueColor]; 
    } 
    return barFill; 
} 

回答

0

是。情節緩存從數據源加載的所有內容,包括條形填充。您需要撥打-reloadData來告訴它新的信息可用於加載。

+0

這就是我所害怕的。謝謝。 –