如何在饼图视图中使用ios-charts获取所选切片的索引?

时间:2015-08-29 17:46:54

标签: ios swift charts ios-charts

如果在饼图视图中选择了切片,我无法弄清楚如何使UILabel可见。我需要知道如何识别是否选择了切片,然后选择了哪个切片,这样我就可以将正确的文本放在UILabel中,然后取消隐藏标签。

伪代码:

if sliceSelected == true {

    var index = sliceSelected.index

    label.text = categoryArray[index]

    label.hidden = false

}

4 个答案:

答案 0 :(得分:2)

这对我有用。附加enum值作为每个条目的data字段,然后在chartValueSelected委托方法中分析该值。

例如,如果您有两个切片,请创建枚举

internal enum SliceType {
    case pepperoni
    case cheese
}

然后在构建PieChartDataSet时,使用PieChartDataEntry构建您的SliceType个对象作为关联数据:

let entry = PieChartDataEntry(value: pepperoniValue,
                              data: SliceType.pepperoni as AnyObject?)

现在确保将视图控制器设置为饼图的委托。然后在chartValueSelected委托方法中,执行以下操作:

func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {
    // Extract the SliceType from the selected value
    guard let sliceType = entry.data as? SliceType else {
        return
    }

    switch sliceType {
    case .pepperoni:
        // Configure the view for pepperoni being selected
    case .cheese:
        // Configure the view for cheese being selected
    }
}

答案 1 :(得分:1)

这是你怎么做的。将ChartViewDelegate添加到您的类中,然后将下面的方法插入代码正文中。如果有人触摸你图表上的值,你想要发生的任何事情都应该放在这个函数体内。

func chartValueSelected(chartView: ChartViewBase, entry: ChartDataEntry, dataSetIndex: Int, highlight: ChartHighlight) {

}

请注意这个非常有用的ios-charts API教程:http://www.appcoda.com/ios-charts-api-tutorial/

答案 2 :(得分:0)

您是否尝试将所选切片存储在如下变量中:

var slice: NSMutableDictionary = [:]

然后设置forKeyPath的值:index?

答案 3 :(得分:0)

每个数据均由高亮显示的X轴分隔。我可以这样做。

public func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {
        pieChartView.highlightValues(nil)
        print(highlight.x)
        if highlight.x == 0.0 {

        } else if highlight.x == 1.0 {

        } else {

        }
    }