HighCharts(iOS)如何通过Swift传索引实现指定位置默认显示tooltip
实现代码
你之前的写法错误原因是load事件需要传入封装了JS逻辑的HIFunction对象,不能直接调用Swift侧的refresh方法,iOS端HighCharts本质是对JS库的WebView封装,事件逻辑需要通过JS函数实现,完整Swift适配代码如下:
import Highcharts // 1. 配置Tooltip let tooltip = HITooltip() // 对应JS里的formatter逻辑,可自定义内容 tooltip.formatter = HIFunction(jsFunction: "function() { return '你要展示的tooltip内容'; }") // 如果需要同时展示多个tooltip,可补充配置: // tooltip.split = true // tooltip.outside = true // 2. 配置Chart加载事件 let chartEvents = HIEvents() // Swift侧定义需要默认展示的点索引,可动态修改 let targetPointIndices: [Int] = [2, 4] // 动态拼接JS逻辑,把Swift侧的索引传入JS执行 let loadEventJS = """ function() { let chart = this; \(targetPointIndices.map { "chart.tooltip.refresh(chart.series[0].points[\($0)]);" }.joined(separator: "\n")) } """ chartEvents.load = HIFunction(jsFunction: loadEventJS) let chart = HIChart() chart.events = chartEvents // 3. 组装到整体配置 let options = HIOptions() options.chart = chart options.tooltip = tooltip // 你自己的series、xAxis、yAxis等其他配置照常写在这里 // 最后赋值给HighchartsView yourHighchartsView.options = options
注意事项
- 如果你要展示多个系列的点,修改JS里
series[0]的索引即可,也可以从Swift侧动态传系列索引参数 - 仅展示单个指定点tooltip的话,不需要额外配置tooltip的split或outside属性,多个tooltip同时展示才需要补充对应的配置
内容的提问来源于stack exchange,提问作者OhStack
相关产品推荐
相关产品推荐

