基于iOS的APP“好妈妈”开发日志十七——实现ios图表(chart)的引用,以及每次返回界面都刷新图表
实现效果图
pageview+AAChartModel / AAChartKit-Swift
AAChartModel / AAChartKit-Swift地址
实现代码
大部分对象的定义都在外部定义完成,不能设为局部变量,不然函数与函数之间无法调用
@IBOutlet weak var tipsView: UIView!
@IBOutlet weak var titleView: DNSPageTitleView!
@IBOutlet weak var contentView: DNSPageContentView!
var text : String?
var dateStr: String = ""
var getCycle: [Double] = []
var getDays: [Double] = []
var getMenstrualArray: [String] = []
var showCycle: String = ""
var showDays: String = ""
var cyc: Int = 0
var day: Int = 0
let controller2 = UIViewController()
open var chartModel: AAChartModel?
open var aaChartView: AAChartView?
创建图表只有一点需要提一下,就是创建图表最好,把配置视图模型AAChartModel放在一个func里,这样就可以在viewWillAppear中实现反复刷新,不然调用self.aaChartView?.aa_refreshChartWholeContentWithChartModel(self.chartModel!)这个函数有时候是刷新不了数据的。
在添加图表试图的时候不要第一个添加,会报错,需要这样:
let subLabel = UILabel()
subLabel.frame = CGRect(x: 20,
y:0,
width: 5,
height: 5)
subLabel.text = "不要将 AAChartView 作为第一个子视图添加到 ViewController 上,否则会有 bug,不信你试试注释掉我"
self.controller2.view.addSubview(subLabel)
//先添加一个无用视图
self.controller2.view.addSubview(self.aaChartView!)
//再添加图表
pageview是引用了DNSPageView
link:DNSPageView
文档是这样写的
// 创建每一页对应的controller
let childViewControllers: [UIViewController] = titles.map { _ -> UIViewController in
let controller = UIViewController()
addChild(controller)
return controller
}
但由于对ios底层的不够了解,导致不知道如何去创建每一个controller
于是用了自己的方法
// 创建每一页对应的controller
let controller1 = UIViewController()
controller1.view.backgroundColor = UIColor.white
controller1.view.layer.cornerRadius = 15
addChildViewController(controller1)
//此处由于要在实现图表的方法中调用controller2,所以将它的定义放在了外面
controller2.view.backgroundColor = UIColor.white
controller2.view.layer.cornerRadius = 15
self.setUpAAChartView()//调用实现图表方法
addChildViewController(controller2)
let controller3 = UIViewController()
controller3.view.backgroundColor = UIColor.white
controller3.view.layer.cornerRadius = 15
addChildViewController(controller3)
let childViewControllers: [UIViewController] = [controller1,controller2,controller3]
此处就完成了各个controller的创建
luhh 今早194day?