如果在饼图视图中选择了切片,我无法弄清楚如何使 UILabel 可见。我需要知道如何识别是否选择了切片,然后选择了哪个切片,以便我可以将正确的文本放入 UILabel 中,然后取消隐藏标签。
伪代码:
if sliceSelected == true {
var index = sliceSelected.index
label.text = categoryArray[index]
label.hidden = false
}
如果在饼图视图中选择了切片,我无法弄清楚如何使 UILabel 可见。我需要知道如何识别是否选择了切片,然后选择了哪个切片,以便我可以将正确的文本放入 UILabel 中,然后取消隐藏标签。
伪代码:
if sliceSelected == true {
var index = sliceSelected.index
label.text = categoryArray[index]
label.hidden = false
}
这对我有用。附加一个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
}
}
每个数据由高亮的 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 {
}
}
这是你如何做到的。添加ChartViewDelegate
到您的类中,然后将下面的方法插入到您的代码主体中。如果有人触摸图表上的值,您想要发生的任何事情都应该放在这个函数的主体中。
func chartValueSelected(chartView: ChartViewBase, entry: ChartDataEntry, dataSetIndex: Int, highlight: ChartHighlight) {
}
向这个非常有用的 ios-charts API 教程大喊:http: //www.appcoda.com/ios-charts-api-tutorial/
您是否尝试将所选切片存储在变量中,例如:
var slice: NSMutableDictionary = [:]
然后设置 forKeyPath: index 的值?