Lua 在表行中添加文本字段-Corona SDK

Lua 在表行中添加文本字段-Corona SDK,lua,coronasdk,corona-storyboard,Lua,Coronasdk,Corona Storyboard,在我的corona项目中,我想在表行中显示textfield。在这里,代码只显示一个textfield,我想在数据可用行中显示textfield local function onRowRender( event ) local phase = event.phase local row = event.row local itemObj = GetItemDetails(row.index); local txt = itemObj.itemName; if(#txt > 25) t

在我的corona项目中,我想在表行中显示textfield。在这里,代码只显示一个textfield,我想在数据可用行中显示textfield

local function onRowRender( event )
local phase = event.phase
local row = event.row

local itemObj = GetItemDetails(row.index);

local txt = itemObj.itemName;
if(#txt > 25) then
    txt = string.sub(txt,1,25);
    txt = txt.."..";
end

local rowTitle = display.newText( row, "\t"..txt, 0, 0, "impact", 14 )
if(deviceName == "iPhone" or deviceName == "iPad") then
    rowTitle.x = row.x - ( row.contentWidth * 0.5 ) + ( rowTitle.contentWidth * 0.5 )
else
    rowTitle.x = row.x - ( row.contentWidth * 0.5 ) + ( rowTitle.contentWidth * 0.5 )+15
end
rowTitle.y = row.contentHeight * 0.5
rowTitle:setTextColor(98, 71, 24)

local rowqtytxt=nil; 
if(deviceName == "iPhone" or deviceName == "iPad") then
    rowqtytxt= native.newTextField( 0, 0,32, 32 ,onSubmitted);
    rowqtytxt.x = 125;
    rowqtytxt.hasBackground = false;
    --rowqtytxt:addEventListener( "userInput", textListener )
    rowqtytxt.size = 32;
else
    rowqtytxt = native.newTextField( 0, 0,32, 32 ,onSubmitted);
    rowqtytxt.x = 207;
    rowqtytxt.hasBackground = false;
   -- rowqtytxt:addEventListener( "userInput", textListener )
    rowqtytxt.size = 32;
end

rowqtytxt.y = row.contentHeight * 0.5
rowqtytxt:setTextColor(98, 71, 24)
return true;
end

上面的代码只显示一个文本字段。当您说“数据可用行”时,请帮助解决此问题,您的意思是什么?在我看来,你的意思是itemObj并不总是包含数据

如果是这种情况,则需要在If块中包装文本字段的添加:

此外,此函数似乎只渲染一行。所以你需要把它包装成一个for循环。差不多

local i;
--The # means 'length of'
for i=1, #yourDataSource do
    onRowRender(yourItemData)
end

在Corona SDK小部件中,newTableView基于显示组。无法将本机。*对象插入显示组。因此,tableView不能滚动文本字段作为行的一部分

几周前有一个教程,我们演示了如何将native.newTextField绑定到显示组

有一个社区项目正在构建该教程中想法的变体,你可以在论坛上找到

其思想是使用enterFrame侦听器将native.newTextField移动到它所绑定的显示对象所在的位置。但是,对于tableView来说,这不实用的原因是,当tableView将行从屏幕上滚动时,它们可能无法正确删除

local i;
--The # means 'length of'
for i=1, #yourDataSource do
    onRowRender(yourItemData)
end