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
现在一切都应该设置好并开始工作了
我想将 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
现在一切都应该设置好并开始工作了