2014-01-31 31 views
1

在我电晕的项目,我想显示在表文本框row.Here的代码,它仅显示一个文本框,我想表明的数据可用行文本字段。在表行添加文本框 - 科罗娜SDK

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 

上面的代码只显示一个文本field.Please帮助,当你说“数据可用的行”,你是什么意思来解决这个问题

回答

1

?在我看来,你的意思是itemObj不会总是有它的数据吗?

如果是这种情况,那么你需要用文本字段的添加在如果块:

if(itemObj ~= nil) then 
    --Adding textField code 
end 

而且,这个功能似乎呈现一行。所以你需要将它包装在for循环中。喜欢的东西

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

在Corona SDK widget.newTableView的是基于显示组。您不能将原生。*对象插入到显示组中。因此,tableView不能将文本字段作为行的一部分进行滚动。

有一个教程在几个星期前,我们演示了如何打native.newTextField到显示组。 http://coronalabs.com/blog/2013/12/03/tutorial-customizing-text-input/

有是大厦的想法的一个变体,该教程,你可以找到在论坛上一个社区项目。

的想法是使用一个enterFrame事件侦听器添加到native.newTextField移动到任何地方显示对象,它的捆绑。然而,让一切不实用了的tableView是,当的tableView滚出屏幕的行,它们可能不会正确删除。