7.TouchGFX界面应用多屏幕传参

来自丢石头百科


上一节使用TouchGFX的handleTickEvent机制做了的计数器,但是有一个缺陷,在切换屏幕后再切换回来计数器归零了,如果我想这个计数器在任意时刻都在计数,哪怕切换的屏幕还是在计数。首先需要知道为什么计数器会归零,原因是TouchGFX使用的是MVP框架,在MVP框架中所有数据仅能保存在称为 Model 的类对象中,Presenter是视图(View)与Model之间的纽带,View只能通过Presenter来读取数据。这个框架可以在VC工程中可以看出。


203134b2o7nndsgopsopoo.png

MVP框架所有需要保存的数据必须再Model 的类对象,我们之前说明的数据都是再View类里面,所以在切换屏幕后所有的数据全部丢失了。


203134r57zl99thrpmfmg7.png

前面说了数据都是再View类切换屏幕后丢掉了类里面的变量,那我设置成全局变量就可以了。


203135e9mmcpr1w4c5jkjr.png

这样哪怕我切换了,数据还是在那里,但是怎么传参呢,定义在.hpp文件里面使用external关键字,都是这样就违背了MVP框架,我们不建议这样做,而且乱调用.hpp文件容易导致冲突,那我还是在Model 的类对象定义变量。找到Model.hpp文件,添加2个公有成员变量,再写读取和写入函数。


203135xm2w8xo3sb38mb3z.png

再Model.cpp里面赋初始值。


203135v6ch3wwlwlx8c2uh.png

View不能直接读写Model中的数据,必须得通过Presenter来操作,所以先要在Presenter中实现对数据的读写,在Screen2Presenter.hpp正添加读写函数。同样在Screen1Presenter.hpp也添加一样的函数。


203135j62j2cvmmmhwx6dk.png

在屏幕1添加一个文本框,同样添加通配符,建议字体都选择一样的。


203135a1iuurrzxn216xhw.png

在Screen2View和Screen1View中添加滴答定时函数声明定义。


203135j7zoqkqr47ro4kwv.png



203135b4mmxubxbugzxuh1.png



203135in4tkjk1k4dunn6h.png

启动模拟器,切换屏幕反应有点慢,在第一次进入handleTickEvent时候就应该更新显示(这里不做演示了)。


203134y3x36s3grsblklbw.gif