我是Swift的新手,我想像下面这样子类化:
public class CombinedChartRenderer: ChartDataRendererBase {
private weak var _chart: CombinedChartView!
public init(chart: CombinedChartView, animator: ChartAnimator, viewPortHandler: ChartViewPortHandler)
{
super.init(animator: animator, viewPortHandler: viewPortHandler)
_chart = chart
createRenderers()
}
}
public class MyCombinedChartRenderer: CombinedChartRenderer {
private weak var _chart: MyCombinedChartView!
public override init(chart: MyCombinedChartView, animator: ChartAnimator, viewPortHandler: ChartViewPortHandler)
{
super.init(chart: chart, animator: animator, viewPortHandler: viewPortHandler)
_chart = chart
}
}
总是说
Overriding method with selector 'initWithChart:animator:viewPortHandler:' has incompatible type '(MyCombinedChartView, ChartAnimator, ChartViewPortHandler) -> MyCombinedChartRenderer'
我不确定这是怎么回事。我看到其他代码可以通过提供更专门的子类来完成此类初始化。
CombinedChartView类似于:
public class CombinedChartView: BarLineChartViewBase
{
...
}
public class MyCombinedChartView: CombinedChartView
{
// do some customization and override
}
只需更改一些变量名,冲突并使用init删除该override关键字即可;
public class CombinedChartRenderer: ChartDataRendererBase {
private weak var _chart: CombinedChartView!
public init(chart: CombinedChartView, animator: ChartAnimator, viewPortHandler: ChartViewPortHandler)
{
super.init(animator: animator, viewPortHandler: viewPortHandler)
_chart = chart
createRenderers()
}
}
public class MyCombinedChartRenderer: CombinedChartRenderer {
private weak var _myChart: MyCombinedChartView!
public init(myChart: MyCombinedChartView, animator: ChartAnimator, viewPortHandler: ChartViewPortHandler)
{
super.init(chart: myChart, animator: animator, viewPortHandler: viewPortHandler)
_myChart = myChart // This can be removed by marking baseclass instance '_chart' as public;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句