Swift iosChart未在UITableViewCell中显示线图视图点
以下是基于在标准视图(单视图应用程序)中运行良好的Swift iosChart未在UITableViewCell中显示线图视图点,swift,ios-charts,Swift,Ios Charts,以下是基于在标准视图(单视图应用程序)中运行良好的LineChartView示例()和BarChartView在TableViewCell中运行良好的。我有一段时间每两秒就要到期,以更新单元格,但尚未连接 正确生成x、y轴(最终图形仅显示9个单元格中的2个),只是没有绘制点。但是,故障仅发生在线形图表视图中。我查看了有关此问题的其他参考资料,但尚未找到具体的修复方法。有什么想法吗 TableViewController class GraphTableTableViewController: U
LineChartView
示例()和BarChartView
在TableViewCell
中运行良好的。我有一段时间每两秒就要到期,以更新单元格,但尚未连接
正确生成x、y轴(最终图形仅显示9个单元格中的2个),只是没有绘制点。但是,故障仅发生在线形图表视图中。我查看了有关此问题的其他参考资料,但尚未找到具体的修复方法。有什么想法吗
TableViewController
class GraphTableTableViewController: UITableViewController {
let model = [1,2,3,4,5,6,7,8,9]
var timer: Timer? = nil
var noSamples = 0
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(fireTimer), userInfo: nil, repeats: true)
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return model.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "lineChart_cell", for: indexPath)
let graphCell = cell as? LineGraphCell
graphCell!.setChartValues()
print("\(model[indexPath.row])")
return graphCell!
}
@objc func fireTimer() {
print("Timer Fired")
noSamples += 1
(view as? UITableView)?.reloadData()
}
}
TableViewCell实现如下所示:
class LineGraphCell: UITableViewCell {
@IBOutlet weak var lineChart: LineChartView!
let x = [0,1,2,3,4,5,6,7,8,9]
let y = [0,1,2,3,4,5,6,7,8,9]
func setChartValues() {
var values = [ChartDataEntry]()
for index in x {
let value = ChartDataEntry(x: Double(index), y: Double(y[index]))
values.append(value)
}
let set1 = ChartDataSet(entries: values, label: "Set1")
let data = ChartData(dataSet: set1)
// Some debug output
if data.entryCount > 0 {
let yValue = "\(values[data.entryCount-1].y)"
print("Y : \(yValue)")
for value in values {
print("\(value.y) ", terminator: "")
}
}
self.lineChart.data = data
}
}
let set1 = ChartDataSet(entries: values, label: "Set1")
let data = ChartData(dataSet: set1)
let set1 = LineChartDataSet(entries: values, label: "Set1")
let data = LineChartData(dataSet: set1)
故事板的设置如下:
尝试使用以下命令
let x = [0,1,2,3,4,5,6,7,8,9]
let y = [0,1,2,3,4,5,6,7,8,9]
func setChartValues() {
var values = [ChartDataEntry]()
for index in x {
let value = ChartDataEntry(x: Double(index), y: Double(y[index]))
values.append(value)
}
let set1 = LineChartDataSet(entries: values, label: "Set1")
set1.color = UIColor.blue // red // green whatever you want.
let data = LineChartData()
data.addDataSet(data:set1)
// Some debug output
if data.entryCount > 0 {
let yValue = "\(values[data.entryCount-1].y)"
print("Y : \(yValue)")
for value in values {
print("\(value.y) ", terminator: "")
}
}
self.lineChart.data = data
}
您需要将ChartDataSet
替换为LineChartDataSet
,如下所示
旧代码:
class LineGraphCell: UITableViewCell {
@IBOutlet weak var lineChart: LineChartView!
let x = [0,1,2,3,4,5,6,7,8,9]
let y = [0,1,2,3,4,5,6,7,8,9]
func setChartValues() {
var values = [ChartDataEntry]()
for index in x {
let value = ChartDataEntry(x: Double(index), y: Double(y[index]))
values.append(value)
}
let set1 = ChartDataSet(entries: values, label: "Set1")
let data = ChartData(dataSet: set1)
// Some debug output
if data.entryCount > 0 {
let yValue = "\(values[data.entryCount-1].y)"
print("Y : \(yValue)")
for value in values {
print("\(value.y) ", terminator: "")
}
}
self.lineChart.data = data
}
}
let set1 = ChartDataSet(entries: values, label: "Set1")
let data = ChartData(dataSet: set1)
let set1 = LineChartDataSet(entries: values, label: "Set1")
let data = LineChartData(dataSet: set1)
替换为:
class LineGraphCell: UITableViewCell {
@IBOutlet weak var lineChart: LineChartView!
let x = [0,1,2,3,4,5,6,7,8,9]
let y = [0,1,2,3,4,5,6,7,8,9]
func setChartValues() {
var values = [ChartDataEntry]()
for index in x {
let value = ChartDataEntry(x: Double(index), y: Double(y[index]))
values.append(value)
}
let set1 = ChartDataSet(entries: values, label: "Set1")
let data = ChartData(dataSet: set1)
// Some debug output
if data.entryCount > 0 {
let yValue = "\(values[data.entryCount-1].y)"
print("Y : \(yValue)")
for value in values {
print("\(value.y) ", terminator: "")
}
}
self.lineChart.data = data
}
}
let set1 = ChartDataSet(entries: values, label: "Set1")
let data = ChartData(dataSet: set1)
let set1 = LineChartDataSet(entries: values, label: "Set1")
let data = LineChartData(dataSet: set1)
这将解决您的问题。设置ChartValues Method在哪里?它位于TableViewController类的cellForRowAt中。您的ChartDataSet应该是LineChartDataSethanks,因为该问题已得到解决-此外,ChartData需要是LineChartDatai我已经为您发布了答案:)