1

データベースにテーブルがあります。そのテーブルには不明な行数があります。チェックボックスを配置したいのですが、チェックボックスの数は行数と同じにする必要があります。したがって、whileループで実行しようとしました。テーブルに存在する行数を見つけました。これはrowNumberです。次に、whileループを実行しました。この時点で、シリアル障害があります。チェックボックスをクリックすると、下の行が最後の m 値で呼び出されるためです。

 cbox[m] = checkBox.new(checkX, txtY, sendRows[m], col,

while loop を終了した後、m は rowNumber に等しいためです。また、チェックボックスがクリックされた場合、m = rowNumber であるため、どの行がクリックされたかはわかりません。いろいろやってみたけど無理。私は何をすべきか ??ループの使用をあきらめるべきですか?もし私がそれを使うのをやめたらどうすればいいですか?

ここに私が修正できないコードがあります

local m = 1
while(m<rowNumber)

cbox[m] = checkBox.new(checkX, txtY, sendRows[m], col,
    function(this)
        local state = this:getCheck()
        if state then 
            print(m .. " checked")
            gonder[m] = 1
        else 
            print(m  .. " does not checked")
            gonder[m] = 0
        end
    end
)
screen:addChild(cbox[m])
cbox[m]:setCheck(settings.getMusicState())
txtY = txtY + gap
print ("gonder[m] = " .. gonder[m])
end

以下のように記述した場合、正しく動作します。

cbox[1] = checkBox.new(checkX, txtY, sendRows[1], col,
    function(this)
        local state = this:getCheck()
        if state then 
            print(1.. " checked")
            gonder[1] = 1
        else 
            print(1  .. " does not checked")
            gonder[1] = 0
        end
    end
)
screen:addChild(cbox[1])
cbox[1]:setCheck(settings.getMusicState())
txtY = txtY + gap

cbox[2] = checkBox.new(checkX, txtY, sendRows[2], col,
    function(this)
        local state = this:getCheck()
        if state then 
            print(2.. " checked")
            gonder[2] = 1
        else 
            print(2  .. " does not checked")
            gonder[2] = 0
        end
    end
)
screen:addChild(cbox[2])
cbox[2]:setCheck(settings.getMusicState())
txtY = txtY + gap
.
.
.
.
4

1 に答える 1

0

while の内部を次のように変更すると解決されます。

while( m<rowNumber + 1)
        do
            cbox[m] = checkBox.new(checkX, txtY, sendRows[m], col,
                function(this)
                end
            )
            screen:addChild(cbox[m])
                txtY = txtY + gap
                m = m + 1
        end

そして重要なポイントはここです。ここでは、必要なものを送信しています。

submitt:addEventListener("click",
        function()
            local mydata={}
            local i=1
            while (i<rowNumber+1) do
                mydata[3*i-2]=cbox[i].checked--1. Holds whether it is true or false
                mydata[3*i-1]=sendRows2[i]
                mydata[3*i] = sendURL[i]
                i=i+1
            end
            sceneManager:changeScene("results", 1, SceneManager.flipWithFade, easing.outBack,mydata)
            stage:removeChild(submitt)--after clicked , the button disappears
        end)
于 2012-09-14T13:26:24.897 に答える