Как получить индекс выбранного фрагмента в представлении круговой диаграммы с помощью ios-charts?

Я не могу понять, как сделать UILabel видимым, если фрагмент выбран в представлении круговой диаграммы. Мне нужно знать, как определить, был ли выбран фрагмент, а затем какой фрагмент был выбран, чтобы я мог поместить правильный текст в UILabel, а затем отобразить метку.

псевдокод:

if sliceSelected == true {

    var index = sliceSelected.index

    label.text = categoryArray[index]

    label.hidden = false

}

person Phil Andrews    schedule 29.08.2015    source источник


Ответы (4)


Это то, что сработало для меня. Прикрепите значение 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
    }
}
person Chris Chute    schedule 09.02.2017

Вот как вы это делаете. Добавьте ChartViewDelegate в свой класс, а затем вставьте приведенный ниже метод в тело вашего кода. Все, что вы хотите, чтобы произошло, если кто-то коснется значения на вашем графике, должно быть в теле этой функции.

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

}

Приветствуйте это очень полезное руководство по API ios-charts: http://www.appcoda.com/ios-charts-api-tutorial/

person Phil Andrews    schedule 29.08.2015

Вы пытались сохранить выбранный фрагмент в переменной, например:

var slice: NSMutableDictionary = [:]

А затем установите значение forKeyPath: index?

person Joe    schedule 29.08.2015

Каждые данные разделены по оси 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 {

        }
    }
person Firda Sahidi    schedule 09.07.2019