You'll have to use the CellEditCallback property, which is a global callback that gets triggered when any cell is edited. There are no callbacks you can set on individual cells.
A pseudo-code template that should get you started:
function cellEditCallback(hTable, editEvent)
% get changed index
changedIndex = editEvent.Indices;
if changedIndex is a popup-cell:
% check new value
newValue = editEvent.NewData;
% set data in appropriate cell to corresponding value
...
As an aside, the columnFormat in the example does not match the data. It specifies column 1 as a popup-column, while according to your data, it should be column 4.
I also had to change []
to ''
to make the popup work and set('ColumnEditable', logical([0,0,0,1]))
.
See e.g.
for a more comprehensive example uitable application.