TableView没有注册任何事件Corona

时间:2013-10-15 00:37:22

标签: lua corona

我正在尝试使用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

有谁知道这个问题是什么?

1 个答案:

答案 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)