3

グラフの列を選択可能にし、クリックすると選択した列の詳細を表示しようとしています。すべての列は1つのシリーズで表されます(すぐに理解できます)。

これは私が各シリーズを構築する方法です:

-(SChartSeries *)sChart:(ShinobiChart *)chart seriesAtIndex:(int)index {
    SChartColumnSeries *series = [SChartColumnSeries new];
    series.style.showAreaWithGradient = NO;
    series.stackIndex = [NSNumber numberWithInt:0];
    series.selectedStyle.showAreaWithGradient = NO;
    CHART_COLOR_TYPE dataType = [TestGraphDataManager getDataType:index];
    series.style.areaColor =    (dataType == ACCOUNT)?
                                    [UIColor colorWithRed:227.0f/255.0f green:179.0f/255.0f blue:0.0f/255.0f alpha:0.5f]:
                                    [UIColor colorWithRed:0.0f/255.0f green:172.0f/255.0f blue:235.0f/255.0f alpha:0.5f];

    series.selectedStyle.areaColor = [UIColor colorWithRed:129.0f/255.0f green:0.0f/255.0f blue:82.0f/255.0f alpha:0.5f];
    series.selectionMode = SChartSelectionSeries;

    series.style.lineColor = [UIColor clearColor];
    series.selectedStyle.lineColor = [UIColor clearColor];

    return series;
}

私が現在抱えている問題は、最初のシリーズだけが選択可能であるということです。また、各バーを異なるシリーズで表すようにしたので、色を簡単に切り替えることができます。series.selectionMode = SChartSelectionSeries

最後に、追加のデータをロードできるようにこのデリゲートイベントがありますが、これも最初のシリーズでのみ呼び出されます

- (void)sChart:(ShinobiChart *)chart toggledSelectionForSeries:(SChartSeries *)series nearPoint:(SChartDataPoint *)dataPoint atPixelCoordinate:(CGPoint)pixelPoint{
    NSLog(@"click event called");
    //Display data
}

なぜこれが起こっているのか誰かが知っていますか?それは私を一日中狂わせてきました。

よろしくお願いします。

編集: 私はseries.stackIndex = [NSNumber numberWithInt:0];それが同じ名前のスタックを持つすべてのバーを作るので大きな問題を見つけました(名前の名前は私の観点では問題ではないので)、私はすべてのバーが同じになるようにこれを行います目盛りマーカーからの距離と、バーがあまり細くならないようにします。しかし、忍はそれらの値に目に見えないバーを配置し、それらは他の値の上にあり、最初のシリーズだけが他のシリーズの上にあるために選択可能になると私は信じています。その行を削除すると、グラフィックはひどく見えますが、すべてクリック可能です。これを回避する方法、またはこの問題を回避する方法についてのアイデアはありますか?

(スタッキングインデックスを使用して)どのように見えるべきか、しかしそれはクリックイベントを壊します: スタッキング付き

インデックスをスタックしないと、すべてのバーはクリック可能ですが、見栄えが悪く、4本のバーしか使用していないバーが多いほど悪化します。 積み重ねなし

4

1 に答える 1

1

シノビからロブ - ご連絡ありがとうございます!

これは、サブクラス化を使用し、次のように列オフセットにゼロを返すことで解決できます。

@interface MyColumnSeries : SChartColumnSeries
@end

@implementation MyColumnSeries
- (double) offsetOfStackInChart:(ShinobiChart *)chart forDatapointIndex:(const int)pointIndex withPointSelector:(SEL)pointSelector
{
    return 0.0;
}
@end
于 2012-11-21T17:36:33.643 に答える