как сделать чекбоксы в for

Slavka Priore

Участник
Автор темы
85
32
Версия MoonLoader
.026-beta
Как правильно сделать инпуты, чекбоксы и тд в цикле for.

Lua:
for i, p in ipairs(myBuyItems) do
                imgui.Text(u8(i .. ' - ' .. myBuyItems[i][1]))
                local mybcount = imgui.ImInt(myBuyItems[i][2])
                if imgui.InputInt(u8'', mybcount) then
                    if myBuyItems[i][2] ~= mybcount.v then
                        myBuyItems[i][2] = mybcount.v
                        jsonSave(json_file_myBuyList, myBuyItems)
                    end
                end
                imgui.Separator()
              end
Вот так инпут постоянно перезаписывается, вот как сделать их нормальными?
 
Решение
Если у тебя что-то в цикле, значит оно будет повторяться.
В твоем случае, все инпуты будут одинаковыми. Поэтому достаточно проиндексировать один инпут, чтобы значения для каждого были разными.
Lua:
for i, p in ipairs(myBuyItems) do
    imgui.Text(u8(i..' - '..myBuyItems[i][1]))
    local mybcount = imgui.ImInt(myBuyItems[i][2])
    if imgui.InputInt(u8'##'..i, mybcount) then
        if myBuyItems[i][2] ~= mybcount.v then
            myBuyItems[i][2] = mybcount.v
            jsonSave(json_file_myBuyList, myBuyItems)
        end
    end
    imgui.Separator()
end

sVor

Активный
139
86
Если у тебя что-то в цикле, значит оно будет повторяться.
В твоем случае, все инпуты будут одинаковыми. Поэтому достаточно проиндексировать один инпут, чтобы значения для каждого были разными.
Lua:
for i, p in ipairs(myBuyItems) do
    imgui.Text(u8(i..' - '..myBuyItems[i][1]))
    local mybcount = imgui.ImInt(myBuyItems[i][2])
    if imgui.InputInt(u8'##'..i, mybcount) then
        if myBuyItems[i][2] ~= mybcount.v then
            myBuyItems[i][2] = mybcount.v
            jsonSave(json_file_myBuyList, myBuyItems)
        end
    end
    imgui.Separator()
end
 
  • Нравится
Реакции: Slavka Priore