highlightValue 在图表中无法使用 CombinedChartView :: 以编程方式显示标记不起作用 :: ChartIssue :: iOS Swift :: DanielGindi

highlightValue not working in chart with CombinedChartView :: Display marker programmatically is not working :: ChartIssue :: iOS Swift :: DanielGindi

这就是我正在做的!

chart.highlightValue(x: timeStampValue, dataSetIndex: totalCount)

==> 在上面一行中, timeStampValue 是我在填充数组时设置的 x 轴值。 totalCount 是我在图表中显示的数据数组的总数。

我需要实现的是

当图表屏幕出现时,我需要默认显示标记,为此,我正在使用无效的图表的“highlightValue”方法。

请让我知道以编程方式默认显示标记的解决方案。

注意: 我使用的标记 UI 是自定义的,当我在图表中的某个点手动点击时工作正常:

let marker = CustomMarkerView.viewFromXib()!
marker.chartView = chart
chart.marker = marker
chart.drawMarkers = true

使用的库:https://github.com/danielgindi/Charts

图表数据集:

let data = CombinedChartData()
data.lineData = LineChartData(dataSets:[viewModel.lineChartDataSet, viewModel.emptylineChartDataSet])
data.lineData.highlightEnabled = true
viewModel.lineChartDataSet.highlightColor = AssetsColor.highlightedColor.color
        viewModel.lineChartDataSet.drawHorizontalHighlightIndicatorEnabled = false
viewModel.lineChartDataSet.highlightLineDashPhase = 2
viewModel.lineChartDataSet.highlightLineDashLengths = [5, 2.5]

您为 dataSetIndex 参数使用了错误的值

根据您的代码,数据集仅包含 2 个数据

data.lineData = LineChartData(dataSets:[viewModel.lineChartDataSet, viewModel.emptylineChartDataSet])

dataSetIndex不是数据个数,在linechart数据集中表示一条线有很多数据(x,y),所以dataSetIndex更像是哪条线

所以你的代码应该是这样的

chart.highlightValue(x: timeStampValue, dataSetIndex: 0)
chart.highlightValue(x: timeStampValue, dataSetIndex: 0, dataIndex: 0)

当我再添加 1 个 dataIndex 作为 0 的参数时,它起作用了。

这里,dataSetIndex设置为0,因为它是我合并了2个数据集的CombinedChartView。