基于iOS的APP“好妈妈”开发日志十七——实现ios图表(chart)的引用,以及每次返回界面都刷新图表

基于iOS的APP“好妈妈”开发日志十七——实现ios图表(chart)的引用,以及每次返回界面都刷新图表

实现效果图

基于iOS的APP“好妈妈”开发日志十七——实现ios图表(chart)的引用,以及每次返回界面都刷新图表_第1张图片

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?

你可能感兴趣的:(iOS_App,xcode,编程,swift,移动开发)