2013-05-17 63 views
0

我有一個散點圖,成功地繪製。我有一個自定義對象的NSArray,每個自定義對象都包含註釋,x值,y值,符號顏色,符號形狀的名稱。當我加載圖時,它工作正常。當我點擊我使用的表格中的行時,我可以隱藏點並立即更改顏色/形狀。然而,直到我改變形狀,顏色纔會改變。我知道重載數據被調用,我知道symbolForScatterPlot被調用,我也知道我給了plotSymbol.fill = [CPTFill fillWithColor:[point getColor]];事實上是新的顏色,但它不會改變!coreplot重新加載數據不變顏色

這裏是代碼:

else if ([self.state isEqualToString:@"settings"]) { 

     if (self.current == -1) { 
      // all stats 
      if ([indexPath section] == 0) { 
       for (int k = 0; k < 32; k ++) { 
        [[theData sharedInstance] setTheColor:tmp index:k]; 
       } 
      } else { 
       for (int k = 0; k < 32; k ++) { 
        [[theData sharedInstance] setTheShape:tmp index:k]; 
       } 
      } 
     } else { 
      // individual stats 
      if ([indexPath section] == 1) { 
       [[theData sharedInstance] setTheShape:tmp index:self.current]; 
      } else { 
       [[theData sharedInstance] setTheColor:tmp index:self.current]; 
      } 
     } 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"updated" object:nil]; 
    } 

導致:

-(void)performTask { 
    [self.hostView.hostedGraph reloadData]; 
    NSLog(@"updated!"); 
} 

和符號代碼:

- (CPTPlotSymbol *)symbolForScatterPlot:(CPTScatterPlot *)plot recordIndex:(NSUInteger)index 
{ 
    CPTPlotSymbol *plotSymbol; 

    DataPoint *point = [[[theData sharedInstance] getData:@"dataPoint"] objectAtIndex:index]; 

    plotSymbol = [point getShape]; 
    plotSymbol.fill = [CPTFill fillWithColor:[CPTColor whiteColor]]; 

    NSLog(@"the fill color is %@", [point getColor]); 

    if ([point getPointOn]) { 
     float var = [[[[theData sharedInstance] getData:@"dataPoint"]objectAtIndex:index] getStats:2005]; 
     plotSymbol.size = CGSizeMake(var/2, var/2); 
    } 
    plotSymbol.fill = [CPTFill fillWithColor:[point getColor]]; 

    return plotSymbol; 
} 

老實說,我不知道爲什麼顏色不會更新。哦,當數據從服務器重新下載並且圖形被重新加載時,顏色將改變而不改變形狀。

編輯:你可以在代碼中看到,我把它設置爲白色的形狀後,但它不是畫成白色,它被畫成默認的顏色,這只是讓我感到困惑甚至更多:/

回答

0

這是一個核心圖解錯誤。當您更改顏色時,劇情符號不會使其內部緩存無效。請在Core Plot issue tracker上報告。

+0

所以沒有修復它? :( – bruceyyy

+0

暫時還沒有,本週末我會試着修復它 –

+0

我剛推出了Google Code的更新,請將最新的代碼與Mercurial合併,試試看,並且告訴我它是否已修復 –