我正在尝试使用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
有谁知道这个问题是什么?
答案 0 :(得分:1)
您应该将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)