【问题标题】:How to run a class again after is has been initialised初始化后如何再次运行类
【发布时间】:2020-05-20 04:22:42
【问题描述】:

我有一个图表,我想用最近的结果加载数据。

Here is a screenshot to show you what it looks like.

我能够正确显示初始数据,但之后我无法更新视图以显示添加到其中的新数据。

该图是带有自定义类 MacawChartView 的故事板上的视图。

class ViewControllerResultsView: ViewController, GADInterstitialDelegate {

@IBOutlet var chartView: MacawChartView!    

override func viewDidLoad() {
    chartView.frame = CGRect(x: w/2 - (w * 0.95)/2, y: h * 0.57, width: w * 0.95, height: w * 0.45)
    chartView.backgroundColor = UIColor.init(displayP3Red: 253/255, green: 254/255, blue: 149/255, alpha: 1)
    chartView.contentMode = .scaleAspectFit
    MacawChartView.playAnimations()

我尝试了很多不同的方法来“重新运行”图表,以便使用更新的数据重新构建,但无法传递所需的“coder aDecoder: NSCoder”参数。这是 MacawChartView.swift 中的初始化程序

    required init?(coder aDecoder: NSCoder){
    super.init(node: MacawChartView.createChart(), coder: aDecoder)
}

感谢您的帮助。如果需要更多信息等,请告诉我。

【问题讨论】:

    标签: ios swift nscoder macaw


    【解决方案1】:

    该库的文档不是很好,但这里有一个适合您的解决方案。我从 gitHub 上的示例项目开始,但我删除了 init 函数并制作了数据 var

    class CustomMacawView: MacawView {
    
    static var data: [Double] = [101, 142, 66, 178, 92]
    static let palette = [0xf08c00, 0xbf1a04, 0xffd505, 0x8fcc16, 0xd1aae3].map { val in Color(val: val)}
    
    
    public func updateData(newData : [Double])
    {
        CustomMacawView.data = newData
        updateDisplay()
    }
    
    public func updateDisplay()
    {
        let chart = CustomMacawView.createChart()
        self.node = Group(contents: [chart])
    }
    

    在我的主视图控制器中,我有一个生成新数据的按钮

    @IBAction func cmdUpdateGraph(_ sender: Any) {
        macawView.updateData(newData: [Double.random(in: 1...100),
                                       Double.random(in: 1...100),
                                       Double.random(in: 1...100),
                                       Double.random(in: 1...100),
                                       Double.random(in: 1...100)]) }
    

    【讨论】:

    • 那个解词!非常感谢!
    • 酷,乐于助人。如果你喜欢这个答案,你应该接受它......
    • @Russell 我试着像你一样做,但它显示了相同的图表:)(但数据发生了变化)。请问你能看到我的问题吗? stackoverflow.com/questions/63216461/…
    猜你喜欢
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2015-03-12
    • 2017-10-23
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多