【问题标题】:On click select all row单击时选择所有行
【发布时间】:2014-02-28 04:57:17
【问题描述】:

这是我用来在表格行中显示刻度线的代码,在每一行上单击刻度线显示,在其他行上单击它的隐藏。我添加了一个按钮来选择使所有刻度线可见(全选),它不是工作。

local function onRowRender( event )
 local phase = event.phase
 local row = event.row
 chktick= display.newImage('images/kitchen/checktick.png',10,10);
  if(deviceName == "iPhone" or deviceName == "iPad") then
   chktick.x=303;
  chktick.isVisible = false;
  else 
   chktick.x=303;   
  chktick.isVisible = false;
  end
 chktick.y=row.contentHeight * 0.5;
 row:insert(chktick);
 row:addEventListener("tap",onRowTouch); 
 return true;
end

关于rowtouch方法

local function onRowTouch( event )
local row = event.target;
local _chktick = event.target[6];
 print("Comes here when touch"..row.index);
  if(flagvalue==1)then
    _chktick.isVisible = true;
   flagvalue=0;
 else
    _chktick.isVisible = false;
  flagvalue=1;
 end
return true; 
end

选择所有方法

local function SelecetAllEventListener( event )
  flagvalue=1;
  currentScene.reloadScene();
 return true;
end

Rowrender 调用代码

function scene:enterScene( event )
MenuID = event.params.currentMenuID;
local group = self.view
    tableView = widget.newTableView
     {
      top = 85,
      left = 0,
      width = 320, 
      height = 380,
      maskFile = "billmask.png",
      hideBackground = true,
      onRowRender = onRowRender,
      listener = tableViewListener,
    }
   end
  group:insert( tableView )
end

请帮助我如何在使用 SelectedAllEventListener 时使所有刻度可见?

【问题讨论】:

  • 您是否试图让按钮使每一行都被选中?您的行组中的第 6 项是复选标记单元格(我认为您的意思是复选标记而不是标记)? onRowRender 在哪里被调用,你能显示那个代码吗?还有按钮代码。
  • @Schollii 是的,在单个按钮上单击要检查标记的每一行。我已添加代码,请检查

标签: lua coronasdk corona-storyboard


【解决方案1】:

问题可能是在您的“全选”处理程序 (SelecetAllEventListener) 中,您将标志设置为 1,然后重新加载场景。这将导致 IIUC 再次调用 onRowRender,但不会导致再次调用 onRowTouch(因为没有触摸一行)。您需要做的是在SelecetAllEventListener 中循环遍历所有行并更改复选标记的可见性。您的代码没有显示您保留行的位置,但我将假设在一个变量中:

local tableRows = {}
local toggle = true

local function somewhereInYourCode()
    ...
    newRow = ...
    yourTable:inserRow(newRow) -- will cause onRowRender to get called
    table.insert(tableRows, newRow)
    ...
end

local function SelecetAllEventListener( event )
    for i,row in ipairs(tableRows) do
        row[6].isVisible = toggle
    end
    toggle = not toggle -- for next time
    return true
end

您的代码没有显示插入行的位置,因此我将其放在 somewhereInYourCode() 中,但您明白了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    相关资源
    最近更新 更多