由于没有文档,iOS图表错误

时间:2016-12-22 07:05:41

标签: ios swift ios-charts

我想在我的项目的一部分中加入Charts。我很难让demo工作。我不知道Objective C所以我将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
  }
}

我上面遇到的错误:

enter image description here

目的是在我的视图中在一个小容器中添加一个图表,但只是为了看到这个moule工作,我选择整个视图来创建插座。我看不到文档。我在youtube上查看了视频,搜索了这个模块的教程,但没有。花了2个小时看,到目前为止没有好处。会感激任何一点点投入。

感谢。

编辑:

根据评论/回答,我已将isEnabled更改为enable。只有一个错误Thread 1:EXC_BAD_ACCESS。该修复程序将我带到了this

这个简单的问题变得越来越长,因为当我进行更改但为Module选择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)

    }

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

3 个答案:

答案 0 :(得分:1)

正如我观察到你需要隐藏描述&传说,所以你改变图表框架的错误属性使用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

希望这会对你有所帮助。

答案 1 :(得分:0)

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

xAxis.enable = false

答案 2 :(得分:0)

从我的评论中缩小解决方案的范围 您可以找到图表框架here

的官方文档

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

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

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

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

让我举个例子

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

一切都应该立即设置并正常工作