iOS 由于没有文档导致图表错误

iOS Chart errors due to no documentation

我想将 Charts on a section of my side project. I struggle to get their demo working. I do not know Objective C so I've converted 他们的代码添加到 Swift。我正在使用 Swift 3:

viewDidLoad():

self.title = "Filled Line Chart"
    self.chartView.delegate = self // after build: Thread 1:EXC_BAD_ACCESS (code=2, address=0x……)
    self.chartView.backgroundColor = UIColor.white
    self.chartView.gridBackgroundColor = UIColor(red: CGFloat(51 / 255.0), green: CGFloat(181 / 255.0), blue: CGFloat(229 / 255.0), alpha: CGFloat(150 / 255.0))
    self.chartView.drawGridBackgroundEnabled = true
    self.chartView.drawBordersEnabled = true
    self.chartView.chartDescription.isEnabled = false
    self.chartView.pinchZoomEnabled = false
    self.chartView.dragEnabled = true
    chartView.scaleEnabled = true
    var l = chartView.legend
    l.isEnabled = false
    var xAxis = chartView.xAxis
    xAxis.isEnabled = false
    var leftAxis = chartView.leftAxis
    leftAxis.axisMaximum = 900.0
    leftAxis.axisMinimum = -250.0
    leftAxis.drawAxisLineEnabled = false

因为我不知道该怎么做,所以我从我的视图中拖了一条线到代码以创建一个 IBOutlet@IBOutlet var chartView: BarChartView!

总的来说是这样的:

import UIKit
import Charts

class DashboardVC: UIViewController, ChartViewDelegate {

  @IBOutlet var chartView: BarChartView!

  override func viewDidLoad() {
    super.viewDidLoad()

self.title = "Filled Line Chart"
        self.chartView.delegate = self
        self.chartView.backgroundColor = UIColor.white
        self.chartView.gridBackgroundColor = UIColor(red: CGFloat(51 / 255.0), green: CGFloat(181 / 255.0), blue: CGFloat(229 / 255.0), alpha: CGFloat(150 / 255.0))
        self.chartView.drawGridBackgroundEnabled = true
        self.chartView.drawBordersEnabled = true
        self.chartView.chartDescription?.isEnabled = false
        self.chartView.pinchZoomEnabled = false
        self.chartView.dragEnabled = true
        self.chartView.scaleXEnabled = true
        var l = chartView.legend
        l.isEnabled = false
        var xAxis = chartView.xAxis
        xAxis.isEnabled = false
        var leftAxis = chartView.leftAxis
        leftAxis.axisMaximum = 900.0
        leftAxis.axisMinimum = -250.0
        leftAxis.drawAxisLineEnabled = false
  }
}

上面的错误:

我的目的是在我的视图上的一个小容器中添加一个图表,但只是为了看看这个 moule 的工作原理,我 select 整个视图来创建出口。我看不到文档。我在 youtube 上看过视频,搜索过这个模块的教程,但没有。花了 2 小时寻找,但到目前为止效果不佳。将不胜感激任何一点输入。

谢谢。

编辑:

根据comments/answer,我已将isEnabled更改为enable。只有一个错误,Thread 1:EXC_BAD_ACCESS。修复将我带到 this.

当我进行更改时,这个简单的问题会变长,但是 selecting Charts 模块,我得到上面的错误,它指向我的自定义 segue:

func goTodashboard() {

        let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        let dc: DashboardVC = storyboard.instantiateViewController(withIdentifier: "dashboardVC") as! DashboardVC

        self.present(dc, animated: true, completion: nil)

    }

基本上,该代码在 viewDidAppear() 中从 loginViewController 调用。当用户登录时,它会转到仪表板。这是切换视图的正确方法吗?它工作正常,但图表有问题。

isEnabled是获取功能,不能用于设置。请使用

xAxis.enable = 假

据我观察,您需要隐藏描述和图例,因此您正在更改 Charts framework 的错误 属性 使用下面的 属性 for enable / disable描述。

self.chartView.chartDescription?.enabled = false

let l  = chartView.legend as Legend
l.enabled = false

let xAxis = chartView.xAxis
xAxis.enabled = false

isEnable 是一个 只读 属性,用于检查功能是否启用及其返回 YES/NO.

希望对您有所帮助。

从我的评论中缩小解决方案的范围 您可以找到 Charts 框架的官方文档 here

isEnabled-方法是getter,对应的setter方法是enabled

尝试使用内置 prepare 方法而不是使用自定义 segue 函数,您可以在验证登录正确后使用 performSegue(withIdentifier: "Your Identifier", sender: /*login-button*/) 以编程方式调用它

确保将正确的 class 设置为显示图表的 UIView(在故事板 select 视图中并转到身份检查器 > 输入 'BarChartView'在模块 Class 属性 和 'Charts' 中 属性)

一切正常后,您需要向图表提供数据:

举个例子

let data = Utils().getData()               
var dataEntries: [ChartDataEntry] = []

for i in 0..<data.count
{
  let dataEntry = ChartDataEntry(x:Double(data[i].xValue), y:Double(data[i].yValue))
  dataEntries.append(dataEntry)
}

let chartDataSet = BarChartDataSet(values: dataEntries, label: "Label")  
let chartData = BarChartData(dataSets: [chartDataSet])            
self.barChart.data = chartData

现在一切都应该设置好并开始工作了