如果在饼图视图中选择了切片,我无法弄清楚如何使UILabel可见。我需要知道如何识别是否选择了切片,然后选择了哪个切片,这样我就可以将正确的文本放在UILabel中,然后取消隐藏标签。
伪代码:
if sliceSelected == true {
var index = sliceSelected.index
label.text = categoryArray[index]
label.hidden = false
}
答案 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 {
}
}