1

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

有谁知道问题可能是什么?

4

1 回答 1

1

您应该在将其添加到表之前on_row_touch( event )定义您的函数。options_for_list_view

Lua 中的对象的创建顺序与源代码中列出的顺序相同。因此,在您的情况下,您只是将 anil放入onRowTouch事件的侦听器位置。然后就创建了一个本地函数,它应该是一个事件监听器:)

一些适当的静态分析工具应该有助于摆脱这种错误......

祝你好运 ;)

简化版:

print(foo())

function foo()
    return "some_value..."
end

输出:

lua: ./call_test.lua:1: attempt to call global 'foo' (a nil value)

于 2013-10-15T19:35:25.203 回答