今天刚学的app传递数据,为了巩固一下知识,做了个简单的app,希望能帮到大家。两个app之间传递数据,最难的部分就是如何让两个app去建立联系,还有在一个app中可能需要用另一个app的内容作为初始化内容。下面是基本的模板:

(主)

(辅)

 首先第一步就是把最基本的模板给布置好,并把每个控件的功能给想好,我的模板要完成的功能是点击主界面的add会将辅界面给打开,在辅界面中将信息输入,点击sure,将把信息放在主界面的表格中。

第二步先将主界面进行初始化:

 function startupFcn(app)
            app.UITable.ColumnName(1)={'姓名'};
            app.UITable.ColumnName(2)={'学号'};
            app.UITable.ColumnName(3)={'班级'};
            app.UITable.ColumnName(4)={'年级'};
            app.UITable.ColumnName(5)={'身份'};
        end

 第三步,因为要将辅界面得到内容更新到主界面,所以要在主界面中创建一个全局函数updata(其功能就是将数据更新到主界面);代码如下:

    methods (Access = public)
        
        function updata(app,name,number,class,year,identity)
            app.NAME=name;
            app.NUMBER=number;
            app.CLASS=class;
            app.YEAR=year;
            app.IDENTITY=identity;
            team={string(name) string(number) string(class) string(year) string(identity)};
            app.UITable.Data=[app.UITable.Data;cell2table(team)];
        end
    end
    

 其中全局变量有:

    properties (Access = private)
        NAME;
        NUMBER;
        CLASS;
        YEAR;
        IDENTITY;
    end

第四步就是让主界面去调用辅界面,按下add控件就将其打开(如果不让辅界面也有初始化的数据内容,那么就不需要在app2(app, , , ,)里面再加别的参数,如果需要初始化数据,则需要在里面添加参数,然后在app2中显示出来,显示是在app2的startupfcn中完成的,app2(app)与app2的初始化函数是对接的关系),代码如下:

function addButtonPushed(app, event)
            app.addButton.Enable='off';
            app2(app);
        end

这样就将app2给打开了;

第五步对app2进行初始化(里面的参数直接与app2(app)里面的参数对接,因为在app2(app)里面没有加别的参数,所以这里面的参数除了mainapp其他都可忽略,mainapp的作用是告诉app2主界面是app1),代码如下:

        function startupFcn(app, mainapp, name, number, class, year, identity)
            app.ListBox.Items(1)={'班长'};
            app.ListBox.Items(2)={'团支书'};
            app.ListBox.Items(3)={'普通干部'};
            app.ListBox.Items(4)={'学生'};
            app.DropDown.Items(1)={'2020'};
            app.DropDown.Items(2)={'2021'};
            app.DropDown.Items(3)={'2022'};
            app.DropDown.Items(4)={'2023'};
            app.Node.Text='通信工程';
            app.Node_2.Text='一班';
            app.Node_3.Text='二班';
            app.Node_4.Text='三班';
            app.callingapp=mainapp;
        end

第六步数控件的使用,就是判断其下方还有没有子节点,如果有就让他继续选择,如果没有就将现在点击的部位显示的内容返回过来;代码如下:

function TreeSelectionChanged(app, event)
            selectedNodes = app.Tree.SelectedNodes;
            if isempty(selectedNodes.Children)
                app.a1=selectedNodes.Text;
            else
                app.a1='';
            end
        end

第七步让app2中输入的数据更新到app1的表格当中,就是去调用app1中的全局函数updata(一定是个公有的全局函数),代码如下:

        function sureButtonPushed(app, event)
            updata(app.callingapp,app.EditField.Value,app.EditField_2.Value,string(app.a1),string(app.DropDown.Value), string(app.ListBox.Value))
            app.callingapp.addButton.Enable='on';
            delete(app);
        end

这样就将数据给返回给表格;

最后要想去在app2中调用app1的button控键,需要在app2中建立一个全局变量,用来读取mainapp,然后调用这个全局变量.。。。button即可,若想让app1里面的控件不可使用,可以:app.callingapp.addButton.Enable='off';即可

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐