3

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

伪代码:

if sliceSelected == true {

    var index = sliceSelected.index

    label.text = categoryArray[index]

    label.hidden = false

}
4

4 回答 4

3

这对我有用。附加一个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
    }
}
于 2017-02-09T14:33:01.603 回答
1

每个数据由高亮的 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 {

        }
    }
于 2019-07-09T10:26:54.047 回答
1

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

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

}

向这个非常有用的 ios-charts API 教程大喊:http: //www.appcoda.com/ios-charts-api-tutorial/

于 2015-08-29T22:14:00.040 回答
0

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

var slice: NSMutableDictionary = [:]

然后设置 forKeyPath: index 的值?

于 2015-08-29T18:00:03.343 回答