나는 Swift 3을 사용하여 작은 실습 IOS 응용 프로그램을 개발 중이다. 그 응용 프로그램 내에서 나는 원형 차트를 갖고 싶다. 원형 차트를 만들려면 this 링크를 따라 파이 차트가 생성됩니다.Swift3 IOS 원형 차트에서 탭 제스처 인식을 추가하는 방법은 무엇입니까?
이제 하나 이상의 기능을 추가하고 싶습니다. 사용자가 임의의 달과 같이 원형 차트 영역 중 하나를 탭하면 새 컨트롤러가 열리 며 그 달의 세부 정보 만 표시됩니다.
제스처 인식 기능을 추가 할 수있었습니다. 그러나 화면의 일부를 탭하면 새 화면이 열립니다. 해당 탭 기능을 원형 차트 섹션에만 제한하고 원형 차트 월을 캡처해야합니다. 코드는
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) ")
}
}
안녕하세요. 답장을 보내 주셔서 감사합니다. 그러나 링크에서 제공되는 단계를 수행 한 후에도 chartValueSelected 함수를 호출하지 않습니다. 왜 그런지 궁금해? ChartViewDeleage로 클래스를 확장하고 pieChartView.delegate = self를 추가했지만 아직 작동하지 않습니다. – NGR
@NGR 게시물을 현재 코드로 편집하고 위임자가 올바르게 설정되었는지 확인하십시오. –
친절히 내 업데이트 된 코드 찾기 – NGR