J'utilise l'open source Charts
par Daniel Cohen Gindi: https://github.com/danielgindi/ChartsAprès un graphique de « Charts par Daniel Cohen Gindi » se graphiques, un UIButton sur l'écran est plus sélectionnable
J'ai un diagramme circulaire mon écran qui se représente graphiquement comme ceci:
//set pie chart data
graphView.data = PieChartData(dataSets: iPieChartDataSet)
de plus j'ai un bouton sur l'écran qui affiche une popover similarly to the accepted answer of this question.
« Ce que je veux » Lorsque l'utilisateur appuie sur la UIButton
à l'écran, je veux un popover à afficher.
« Ce qui fonctionne » Quand j'appuyez sur la UIButton
, le popover est créé et présenté comme prévu. De plus, je peux créer le popover, le fermer et le recréer.
"Ce qui ne fonctionne pas" Si le graphique est présent à l'écran, le popover n'apparaît pas. J'ai essayé d'utiliser une déclaration print
dans le UIButton
et il semble que le IBAction
ne soit jamais viré.
Autres informations Les autres actions de l'interface utilisateur fonctionnent. Je peux tabuler à d'autres onglets et je peux pivoter le graphique autour. Il semble juste que le UIButton
soit en quelque sorte éteint si le graphique sur l'écran est présent.
Code pertinent: Comment le popover est créé:
@IBAction func informationButtonTapped(_ sender: UIButton) {
var popoverContent = (self.storyboard?.instantiateViewController(withIdentifier: segueIdentifiers.informationPopover))! as UIViewController
var nav = UINavigationController(rootViewController: popoverContent)
nav.modalPresentationStyle = UIModalPresentationStyle.popover
var popover = nav.popoverPresentationController
popoverContent.preferredContentSize = CGSize(width: 500,height: 600)
popover?.delegate = self
popover?.sourceView = self.view
popover?.sourceRect = CGRect(x: 0, y: 0, width: 100, height: 100)
self.present(nav, animated: true, completion: nil)
}
Comment le graphique est créé (raccourcies autant que possible):
private func setChart(dataPoints: [String?], values: [Double]) {
var dataEntries: [PieChartDataEntry] = []
for i in 0..<dataPoints.count {
let dataEntry = PieChartDataEntry(value: values[i], label: dataPoints[i])
dataEntries.append(dataEntry)
}
let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "")
var iPieChartDataSet: [IChartDataSet] = []
iPieChartDataSet.append(pieChartDataSet)
graphView.animate(xAxisDuration: 1.0, yAxisDuration: 1.0)
graphView.layer.borderWidth = 0.1
//set pie chart data
graphView.data = PieChartData(dataSets: iPieChartDataSet)
}