我正在尝试使用Corona中的TableView小部件创建项目列表。我按照他们的在线示例创建了 TableView。它出现在屏幕上并且可以滚动,但是当我单击一行时不会触发任何事件,即使我为OnRowTouch
设置了侦听器。
local options_for_list_view = {
id = "list_view",
top = 0,
left = 0,
width = display.contentWidth,
height = display.contentHeight,
hideBackground = true,
hideScrollBar = true,
listener = on_table_touch,
onRowRender = onRowRender,
onRowTouch = on_row_touch, -- registering listener
}
list_view = widget.newTableView(options_for_list_view)
for key, value in pairs(trophy_list) do
local params =
{
name = key
}
list_view:insertRow
{
isCategory = false,
rowHeight = total_height * 0.1,
rowColor = rowColor,
lineColor = { 0, 0, 0 },
params = params
}
end
这是侦听器:
local function on_row_touch( event )
print("error")
end
有谁知道问题可能是什么?
您应该在将on_row_touch( event )
函数添加到options_for_list_view
表之前对其进行定义。
Lua 中的对象的创建顺序与源中列出的顺序相同。因此,在您的情况下,您只是将nil
放入onRowTouch
事件的听众位置。在那之后,创建了一个本地函数,该函数应该是事件侦听器:)
一些适当的静态分析工具应该有助于摆脱这种错误......
祝你好运;)
简体版:
print(foo())
function foo()
return "some_value..."
end
输出:
lua: ./call_test.lua:1: attempt to call global 'foo' (a nil value)