这里我用来显示表格行中的刻度线的代码,在每一行上单击勾选标记显示,然后点击其隐藏。我添加了一个按钮来选择使所有刻度可见(全选),它不是工作
local function onRowRender( event )
local phase = event.phase
local row = event.row
chktick= display.newImage('images/kitchen/checktick.png',10,10);
if(deviceName == "iPhone" or deviceName == "iPad") then
chktick.x=303;
chktick.isVisible = false;
else
chktick.x=303;
chktick.isVisible = false;
end
chktick.y=row.contentHeight * 0.5;
row:insert(chktick);
row:addEventListener("tap",onRowTouch);
return true;
end
关于rowtouch方法
local function onRowTouch( event )
local row = event.target;
local _chktick = event.target[6];
print("Comes here when touch"..row.index);
if(flagvalue==1)then
_chktick.isVisible = true;
flagvalue=0;
else
_chktick.isVisible = false;
flagvalue=1;
end
return true;
end
选择所有方法
local function SelecetAllEventListener( event )
flagvalue=1;
currentScene.reloadScene();
return true;
end
Rowrender调用代码
function scene:enterScene( event )
MenuID = event.params.currentMenuID;
local group = self.view
tableView = widget.newTableView
{
top = 85,
left = 0,
width = 320,
height = 380,
maskFile = "billmask.png",
hideBackground = true,
onRowRender = onRowRender,
listener = tableViewListener,
}
end
group:insert( tableView )
end
请帮助我如何使用 SelecetAllEventListener 显示所有可显示的内容?
答案 0 :(得分:1)
问题可能在于您的“全选”处理程序(SelecetAllEventListener
),您将标志设置为1,然后重新加载场景。这将导致IIUC再次调用onRowRender,但它不会再次调用onRowTouch(因为没有触及一行)。您需要做的是在SelecetAllEventListener
中循环遍历所有行并更改复选标记的可见性。你的代码没有“显示你保留行的位置,但我将在变量中假设:
local tableRows = {}
local toggle = true
local function somewhereInYourCode()
...
newRow = ...
yourTable:inserRow(newRow) -- will cause onRowRender to get called
table.insert(tableRows, newRow)
...
end
local function SelecetAllEventListener( event )
for i,row in ipairs(tableRows) do
row[6].isVisible = toggle
end
toggle = not toggle -- for next time
return true
end
您的代码未显示您插入行的位置,因此我将其放入somewhereInYourCode()
但您明白了。