如何使CareKitUI条形图与SwiftUI兼容



目前,使用SwiftUI对CareKit的支持有限。

一般来说,我理解制作一个符合UIViewRepresentable的对象的想法,但我很难理解这在实践中的工作方式。

以下是自述文件中的示例代码:

let chartView = OCKCartesianChartView(type: .bar)
chartView.headerView.titleLabel.text = "Doxylamine"
chartView.graphView.dataSeries = [
OCKDataSeries(values: [0, 1, 1, 2, 3, 3, 2], title: "Doxylamine")
]

因此,init(type)headerView.titleLabelgraphView.dataSeries需要在符合UIViewRepresentable的结构中设置为@Binding变量,但我很难弄清楚如何使用以下两个函数:

func makeUIView() {}
func updateUIView() {}

任何帮助都将不胜感激。

实际上只有数据需要绑定,因为类型是初始化的一部分,标题几乎不可能更改,所以这里有可能的变体

struct CartesianChartView: UIViewRepresentable {
var title: String
var type: OCKCartesianGraphView.PlotType = .bar
@Binding var data: [OCKDataSeries]
func makeUIView(context: Context) -> OCKCartesianChartView {
let chartView = OCKCartesianChartView(type: type)
chartView.headerView.titleLabel.text = title
chartView.graphView.dataSeries = data
return chartView
}
func updateUIView(_ uiView: OCKCartesianChartView, context: Context) {
// will be called when bound data changed, so update internal 
// graph here when external dataset changed
uiView.graphView.dataSeries = data
}
}

相关内容

  • 没有找到相关文章

最新更新