我想在我的项目的一部分中加入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
}
}
我上面遇到的错误:
目的是在我的视图中在一个小容器中添加一个图表,但只是为了看到这个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()
中调用。用户登录时,会转到仪表板。这是切换视图的正确方法吗?它工作正常,但图表有问题。
答案 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
一切都应该立即设置并正常工作