gpt4 book ai didi

ios - 如何在 Swift3 IOS 饼图中添加点击手势识别?

转载 作者:搜寻专家 更新时间:2023-10-31 22:19:38 25 4
gpt4 key购买 nike

我正在使用 Swift 3 开发小型练习 IOS 应用程序。在该应用程序中,我想要一个饼图。为了构建饼图,我遵循了 this正在生成链接和饼图。

现在我想再添加一项功能。当用户像任何一个月一样点击饼图的某个区域时,它应该打开一个新的 Controller 并仅显示该月的详细信息。

我设法添加了手势识别功能。但是当我点击屏幕的任何部分时,它会打开新屏幕。我只想将该点击功能限制为饼图部分,并且应该捕获该饼图月份。代码是

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTap))

pieChartView.addGestureRecognizer(gestureRecognizer)

处理tap代码是

func handleTap(gestureRecognizer: UIGestureRecognizer) {
let monthDetail = storyboard?.instantiateViewController(withIdentifier: "MonthTableView") as! MonthDetailsTableViewController
monthDetail = month //Should be the month value of Tap area
navigationController?.pushViewController(monthDetail, animated: true)

}

感谢任何帮助!!

==========================

更新代码

import UIKit
import Charts
import CoreData

class ExpenseViewController: UIViewController, ChartViewDelegate {

@IBOutlet weak var pieChartView: PieChartView!

let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
var unitsSold = [10.0, 20.0, 10.0, 30.0, 10.0, 10.0]

override func viewDidLoad() {
super.viewDidLoad()

setChart(dataPoints: months, values: unitsSold)

pieChartView.delegate = self
}

func setChart(dataPoints: [String], values: [Double]) {
var dataEntries: [ChartDataEntry] = []

for i in 0..<dataPoints.count {
let dataEntry = PieChartDataEntry(value: values[i], label: dataPoints[i])
dataEntries.append(dataEntry)
}


let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "Units Sold")
let pieChartData = PieChartData(dataSet: pieChartDataSet)

pieChartView.data = pieChartData

}

func chartValueSelected(chartView: ChartViewBase, entry: ChartDataEntry, dataSetIndex: Int, highlight: ChartHighlighter) {
//print("\(entry.value) in \(months[entry.xIndex])")
print("Y = \(entry.y) ")
print("X = \(entry.x) ")
}

}

最佳答案

检查 Appcoda tutorial 中的触摸事件部分,您会找到 ChartViewDelegate 方法 chartValueSelected,因此您需要使用该方法而不是 UITapGestureRecognizer

func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {
print("\(entry.value) in \(yourArray[entry.xIndex])")
}

关于ios - 如何在 Swift3 IOS 饼图中添加点击手势识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42788617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com