Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua coronasdk中的Tableview_Lua_Tableview_Coronasdk - Fatal编程技术网

Lua coronasdk中的Tableview

Lua coronasdk中的Tableview,lua,tableview,coronasdk,Lua,Tableview,Coronasdk,我试图在Corona中设置一个表视图,它显示用户在textfield对象中输入文本后创建的行。到目前为止,输入的文本应该显示在创建的新行中 我遵循一个教程来做这件事,它没有一步一步地解释如何做这件事,而TableView远远超出了我的编程能力,所以我要么错过了一些非常明显的东西,要么犯了一个结构错误。。。基本上,我无法将输入的文本传递到要显示的行。下面是有问题的片段: local savename = native.newTextField( 0, 0, display.contentWidth

我试图在Corona中设置一个表视图,它显示用户在textfield对象中输入文本后创建的行。到目前为止,输入的文本应该显示在创建的新行中

我遵循一个教程来做这件事,它没有一步一步地解释如何做这件事,而TableView远远超出了我的编程能力,所以我要么错过了一些非常明显的东西,要么犯了一个结构错误。。。基本上,我无法将输入的文本传递到要显示的行。下面是有问题的片段:

local savename = native.newTextField( 0, 0, display.contentWidth - 50, 24 )
      sceneGroup:insert (savename)

      savename.x = centerX
      savename.y = display.screenOriginY + 140   
      savename.inputType = "default"
      savename:setTextColor( 0, 0, 0 )
      savename.align = "center"

local function scrollListener (event)
end

local function makeRow (event, txt)
  local row = event.target;

  row.t = display.newText(txt,0,0,"Helvetica",18)
  row.t.anchorX = 0
  row.t.y = row.height * 0.5
end

local function handleRowTouch (event)
end

local tableView = widget.newTableView( {
    top = display.contentHeight/2 + 90,
    width = display.contentWidth,
    height = 240,
    listener = scrollListener,
    onRowRender = makeRow,
    onRowTouch = onRowTouch
} )

sceneGroup:insert (tableView)

      local savename = native.newTextField( 0, 0, display.contentWidth - 50, 24 )
      sceneGroup:insert (savename)

      savename.x = centerX
      savename.y = display.screenOriginY + 140   
      savename.inputType = "default"
      savename:setTextColor( 0, 0, 0 )
      savename.align = "center"

      function savename:userInput (event)

        local length = string.len( self.text )

        if (event.phase == "began") then
          print ("Began" .. event.target.text)
          elseif (event.phase == "editing") then
                      print ("editing" .. event.target.text)

            elseif (event.phase == "ended") then
                      print ("ended" .. event.target.text)

            elseif (event.phase == "submitted") then

                    if (length > 0)  then

                      local rowHeight = 38
                      local rowColor = {default = { 1, 1, 1}}
                      local lineColor = {0, 0, 0}

                      local txt = self.text      

                      tableView:insertRow({

                        onEvent = handleRowTouch,
                        onRender = function (event) makeRow (event, txt) end,

                        height = rowHeight,
                        rowColor = rowColor,
                        lineColor = lineColor                      
                        })

                      self.text = ""
                      setKeyboardFocus (nil)

                    else

                      local alert = native.showAlert("Hey!", "Type in a save name please...\n Or dismiss this action by touching the background.", {"Ok"})

                    end

        end
      end  

      savename:addEventListener ("userInput", savename)
然后在“savename:userInput”函数的“submitted”阶段,我调用了tableView:insertRow方法,onRender调用“makeRow”函数,将“event”和“txt”作为参数传递

“txt”应该对应于用户输入的文本,由“local txt=self.text”指定,但是当我运行程序时,在makeRow函数中创建行文本(row.t)时,返回一个错误,说“需要字符串”

这似乎是因为我没有正确地传递该参数,但我无法找出我在哪里犯了错误。你们知道为什么吗


谢谢 我认为可以解决您的问题的方法是将self.text替换为event.target.text

希望有帮助