在我的日冕项目中,我想在表格行中显示文本字段。这里是代码,它只显示一个文本字段,我想在数据可用行中显示文本字段。
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
上面的代码只显示了一个文本字段。请帮助解决此问题
答案 0 :(得分:1)
当您说'数据可用行'时,您的意思是什么?在我看来,你的意思是itemObj并不总是有数据吗?
如果是这种情况,那么您需要在 if 块中包含文本字段的添加:
if(itemObj ~= nil) then
--Adding textField code
end
此外,此功能似乎呈现单行。所以你需要将它包装在for循环中。像
这样的东西local i;
--The # means 'length of'
for i=1, #yourDataSource do
onRowRender(yourItemData)
end
答案 1 :(得分:1)
在Corona SDK中,widget.newTableView基于显示组。您不能将本机。*对象插入显示组。因此,tableView无法将文本字段作为行的一部分滚动。
几周前有一个教程,我们演示了如何将native.newTextField绑定到显示组。 http://coronalabs.com/blog/2013/12/03/tutorial-customizing-text-input/
有一个社区项目正在该教程中构建一个可以在论坛上找到的想法的变体。
我们的想法是使用enterFrame侦听器将native.newTextField移动到与其绑定的显示对象的任何位置。但是,对于tableView来说这不实用的是,当tableView滚动屏幕上的行时,它们可能无法正确删除。