Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift iosChart未在UITableViewCell中显示线图视图点_Swift_Ios Charts - Fatal编程技术网

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我已经为您发布了答案:)