如何在初始化后再次 运行 a class
How to run a class again after is has been initialised
我有一个图表,我想用最近的结果加载数据。
Here is a screenshot to show you what it looks like.
我能够正确显示初始数据,但是之后我无法更新视图以显示添加到其中的新数据。
该图是带有自定义 class 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()
我尝试了很多不同的方法来 're-run' 图表,因此它使用更新的数据重建但无法通过所需的 'coder aDecoder: NSCoder' 参数。这是 MacawChartView.swift
中的初始化程序
required init?(coder aDecoder: NSCoder){
super.init(node: MacawChartView.createChart(), coder: aDecoder)
}
感谢您的帮助。如果需要更多信息等,请告诉我。
该库的文档不是很好,但这是适合您的解决方案。我从 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)]) }
我有一个图表,我想用最近的结果加载数据。
Here is a screenshot to show you what it looks like.
我能够正确显示初始数据,但是之后我无法更新视图以显示添加到其中的新数据。
该图是带有自定义 class 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()
我尝试了很多不同的方法来 're-run' 图表,因此它使用更新的数据重建但无法通过所需的 'coder aDecoder: NSCoder' 参数。这是 MacawChartView.swift
中的初始化程序 required init?(coder aDecoder: NSCoder){
super.init(node: MacawChartView.createChart(), coder: aDecoder)
}
感谢您的帮助。如果需要更多信息等,请告诉我。
该库的文档不是很好,但这是适合您的解决方案。我从 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)]) }