将tableView中的行ID传递到新场景中的Corona SQL。
2015-10-2 8:37:51
收藏:0
阅读:56
评论:1
我找到了一个类似的问题,到目前为止它对我有用,我用print语句获得了行ID。
我正在tableView中显示来自我的数据库的数据。使用onTouch函数,我希望在scrollView中显示新场景中显示特定于点击行的数据。因此,例如,我单击Capital_NL,它必须在scrollView(Scene 2)中显示Amsterdam。
到目前为止,这是我的代码:
第1场景:
local count = 0
local baslikRow = {}
for row in db:nrows("SELECT dua_id, baslik FROM dua") do
count = count + 1
baslikRow[count] = {}
baslikRow[count].baslik = row.baslik
baslikRow[count].dua_id = row.dua_id
end
local function tableViewListener( event )
print(event.phase)
end
local function onRowRender( event )
local row = event.row
local rowHeight = row.contentHeight
local rowWidth = row.contentWidth
local options =
{
parent = row,
text = baslikRow[row.index].baslik,
x = 20,
y = 0,
font = native.systemFont,
fontSize = 16
}
local rowTitle = display.newText(options)
rowTitle:setFillColor( 0, 0, 0 )
rowTitle.anchorX = 0
rowTitle.x = 15
rowTitle.y = rowHeight * 0.5
end
local function onRowTouch( event )
local row = event.row
if event.phase == 'tap' then
print("Pressed rowNR: " .. row.index )
print("Pressed rowID: " .. event.target.params.paramID)
composer.gotoScene("scene2")
end
end
local tableView = widget.newTableView{
left = 0,
top = 0,
height = display.contentHeight,
width = display.contentWidth,
onRowRender = onRowRender,
onRowTouch = onRowTouch,
}
for i = 1, count do
tableView:insertRow
{
rowHeight = 50,
rowid = baslikRow[count].dua_id,
params = { paramID = baslikRow[i].dua_id }
}
end
sceneGroup:insert(tableView)
第2场景:
---------------------
-- CREATE SCROLLVIEW
---------------------
local scrollView = widget.newScrollView
{
left = 0,
top = 0,
width = display.contentWidth,
height = display.contentHeight,
topPadding = 0,
bottomPadding = 0,
horiontalScrollDisabled = true,
verticalScrollDisable = false,
listener = scrollListener,
}
sceneGroup:insert(scrollView)
---------------------
-- GET DATA FROM DB
---------------------
for row in db:nrows("SELECT metni FROM dua") do
local rowParams =
{
duaID = row.dua_id,
Metni = row.metni,
}
local options =
{
text = row.metni,
x = display.contentCenterX + 20,
y = display.contentHeight / 2,
width = 300,
width = display.contentWidth,
font = native.systemFontBold,
fontSize = 18,
}
local t = display.newText(options)
t:setTextColor(0)
scrollView:insert(t)
end
我现在拥有的是,无论我单击Capital_NL还是Capital_USA或Capital_Germany,我始终会得到Amsterdam的结果。
如何将第1场景中与数据库中相同的行中的数据传递到第2场景中?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
我认为您要根据在前一个场景中点击的行号展示(metni)数据..
在scene1中尝试这个..
for row in db:nrows("SELECT dua_id, baslik, metni FROM dua") do count = count + 1 baslikRow[count] = {} baslikRow[count].baslik = row.baslik baslikRow[count].dua_id = row.dua_id baslikRow[count].metni = row.metni在onRowTouch事件处理程序中:
composer.gotoScene("scene2",{params = baslikRow[row.index].metni})这样您可以传递要使用的数据..我猜您不需要在scene2中使用数据库代码..
要访问从scene1传递到scene2的数据
local selectedRow = event.params然后..
local options = { text = selectedRow, x = display.contentCenterX + 20, y = display.contentHeight / 2, width = 300, width = display.contentWidth, font = native.systemFontBold, fontSize = 50, } local t = display.newText(options) t:setTextColor(0) scrollView:insert(t)我认为这就是您所要求的..如果不是,请解释更多并给我们一个“dua”表的屏幕截图..