Я нахожусь в процессе разработки приложения IOS для небольшой практики с использованием Swift 3. Внутри этого приложения я хотел бы иметь круговую диаграмму. Чтобы построить круговую диаграмму, я перешел по этой ссылке, и круговая диаграмма становится сгенерировано.
Теперь я хочу добавить еще один функционал. Когда пользователь нажимает на одну из областей круговой диаграммы, как и в любой другой месяц, он должен открывать новый контроллер и отображать сведения только об этом месяце.
Мне удалось добавить функцию распознавания жестов. Но когда я нажимаю на любую часть экрана, открывается новый экран. Я хочу ограничить эту функциональность крана только разделом круговой диаграммы, и этот месяц круговой диаграммы должен быть захвачен. Код
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTap))
pieChartView.addGestureRecognizer(gestureRecognizer)
И код крана ручки
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) ")
}
}