MATLAB: Add row to table in app designer – works … but not completely

app designerrowstable

I am trying to add rows to a table by clicking a button in a GUI
the code is as follows: the table is first initialized through a first button and then the second button is supposed to fill in data (I have not found a better way to add the row of data without this initialization. It seems that after the first addition the second row fails to concatenate, although the values should be taken from the same edit boxes which are constantly updated – I can see that actually)
function ButtonPushed(app, event)
emptydata = {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 };
set(app.UITable, 'Data', emptydata);
end
...
function ButtonPushed(app, event)
rowdata = {app.EditField2.Value app.EditField.Value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 };
% app.UITable = [app.UITable; rowdata];
app.UITable.Data = [{app.UITable.Data{:}}; rowdata];
end

Best Answer

If the uitable already has 18 columns,
Follow the example shown here.
app.UITable.Data = {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0};
Then add rows, again with 18 columns,
rowdata = {2, 5, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0};
app.UITable.Data = [app.UITable.Data; rowdata];
This has been tested in r2020a.
If the uitable does not have 18 columns, then the first line should be replaced with
app.UITable.Data = num2cell([0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]);
Now it will have 18 columns and the 2nd line can stay the same (as long it is also produces 18 columns of data).