0

正常にプロットされる散布図があります。アノテーションの名前、x 値、y 値、シンボルの色、シンボルの形状を含むカスタム オブジェクトの NSArray があります。グラフをロードすると正常に動作します。使用しているテーブルの行をクリックすると、ポイントを非表示にして色/形状を即座に変更できます。ただし、形状を変更するまで色は変わりません。データのリロードが呼び出されていること、symbolForScatterPlot が呼び出されていること、plotSymbol.fill = [CPTFill fillWithColor:[point getColor]]; に与えていることも知っています。実際には新しい色ですが、変わりません!

コードは次のとおりです。

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;
}

正直なところ、色が更新されない理由がわかりません。また、サーバーからデータを再ダウンロードしてグラフをリロードすると、形状は変わらずに色が変わります。

編集:コードでわかるように、形状の直後に白に設定しましたが、白として描画されず、デフォルトの色として描画され、さらに混乱しました:/

4

1 に答える 1

0

これはコア プロットのバグです。色を変更しても、プロット シンボルは内部キャッシュを無効にしません。Core Plot issue trackerで報告してください。

于 2013-05-18T00:16:46.163 に答える