2016-12-12 3 views
0

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) 
} 

Répondre

0

Pour mon application, j'ai créé les boutons par programme, et je n'ai eu aucun problème jusqu'à présent. Heres mon code de bouton, voir si cela fonctionne pour vous. Ignorez la mise en forme de stackoverflow pour le #selector commenté.

var updateButton : UIButton = UIButton(type: .custom) 

override func viewDidLoad() { 
    super.viewDidLoad() 

    setChart() 

    let buttonHeight = 60.0 
    let buttonWidth = 280.0 
    let xspacing = 45.0 
    let fontSize:CGFloat = 30 
    let buttonColor = UIColor.black 
    let textColor = UIColor.blue 

    updateButton.frame = CGRect(x: xspacing, y: 400, width: buttonWidth, height: buttonHeight) 
    updateButton.backgroundColor = buttonColor 
    updateButton.clipsToBounds = true 
    updateButton.setTitle("Update", for: .normal) 
    updateButton.titleLabel!.font = UIFont(name: "ScienceFair", size: fontSize) 
    updateButton.titleLabel!.textColor = UIColor.black 
    updateButton.addTarget(self, action: #selector(updateFunc), for: .touchUpInside) 
    view.addSubview(updateButton) 

} 

func updateFunc() { 
    UIView.animate(withDuration: 0.1, animations: { self.updateButton.transform = CGAffineTransform(scaleX: 0.9, y: 0.9) }, completion: { (finish: Bool) in UIView.animate(withDuration: 0.1, animations: { self.updateButton.transform = CGAffineTransform.identity }) }) 
    //Present Popover 
} 

Ce n'est pas un commentaire.