TableView未注册任何事件。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

有人知道问题是什么吗?

点赞
用户1150918
用户1150918

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

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

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

祝你好运;)

简化版本:

print(foo())

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

输出:

lua:./call_test.lua:1:尝试调用全局“foo”(值为nil)

2013-10-15 19:35:25