2016-06-29 5 views
0

막대 그래프 차트가 작동 중이고 막대를 눌러 선택할 수 있습니다. 내 ShinobiChart 데이터 소스의 -sChart:seriesAtIndex:에서열 시리즈를 선택하는 방법 코드 막대 내

은 내가 구현 한 :

SChartColumnSeries *series = [[SChartColumnSeries alloc] init]; 
series.detectTapsOutsideBar = YES; 
series.selectionMode = SChartSelectionPoint; 

것은 잘 작동된다. 지금하고 싶은 것은 그 뒤에있는 데이터의 인덱스를 기반으로 특정 막대를 선택할 수있게하려는 것입니다. 어떻게 할 수 있니? 차트, 시리즈를 살펴 보았지만 열을 선택하는 방법을 찾을 수 없습니다.

또한 추가 포인트 : 적어도 하나의 열을 항상 선택해야합니다.

는 업데이트 : 나는 다음과 같은 코드를 추가하는 시도

는 :

for (int index = 0; index < self.chartView.series[0].dataSeries.dataPoints.count; index++) 
{ 
    SChartDataPoint *point = (SChartDataPoint *)self.chartView.series[0].dataSeries.dataPoints[index]; 
    if (lapIndex == index) 
    { 
     point.selected = YES; 
    } 
    else 
    { 
     point.selected = NO; 
    } 
} 

는 전혀 영향을 미치지 것 같았다. 나는 또한 차트를 그리기 위해 다시 시도했다.

결국 코드를 ​​제거하고 -reloadData-redrawChart을 차트에 표시 한 다음 데이터 소스에서 선택하도록 설정했습니다. 이것은 작동 중입니다.

답변

1

면책 조항 저는 ShinobiControls의 개발자입니다.

우리는 데이터 포인트 선택 API를 최근에 변경했는데 다음 API는이 기능을 조금 더 명확하게하기 위해 출시 될 예정입니다.

현재 "dataSeries.dataPoints"배열을 통해 시리즈 데이터 포인트를 반복해야합니다. 그런 다음 배열에서 꺼낸 점을 유형 ID에서 SChartDataPoint로 캐스팅하고 해당 점에서 선택한 속성을 설정합니다.

차트를 처음 그릴 때 데이터 포인트를 선택하려면 SChartDatasource 메서드 인 "dataPointAtIndex :"에서 반환하는 SChartDataPoint 개체의 selected 속성을 설정할 수 있습니다.

한 번에 하나의 점만 선택되도록하려면 "togglePointSelection"BOOL 속성을 NO로 설정할 수 있습니다. 이 속성을 YES로 설정하면 한 번에 두 개 이상의 점을 선택할 수 있습니다.

+0

고맙습니다. -sChart : dataPointAtIndex : forSeriesAtIndex :에서 선택한 첫 번째 지점을 설정하고 있습니다. -sChart : toggledSelectionForPoint : inSeries : atPixelCoordinate : 내 대리자에서 모든 dataPoints를 반복합니다. 선택하지 않으면 현재 dataPoint를 추출합니다. dataPoints 배열에서 선택 속성을 다시 설정하십시오. 이로 인해 필요한 기능이 제공되었습니다. 즉, 항상 하나 이상의 막대가 선택되었습니다. – Ants

+0

흥미롭게도 위임 메서드에서 반환 된 dataPoint에 선택된 플래그를 설정해도 아무런 효과가 없습니다. – Ants

관련 문제