function tableview() local origin = CCEGLView:sharedOpenGLView():getVisibleSize(); local TestLayer = cclayer:create() local NodeBg=CCNode:create(); NodeBg:setPosition(ccp(10,origin.height/8)) local data = {} for i = 1,10 do table.insert(data,"Data"..i) end --装入tableview的数据源 local h = LuaEventHandler:create(function(fn,table,a1,a2) local r if fn == "cellSize" then r = CCSizeMake(480,100) --每格的尺寸 elseif fn == "cellAtIndex" then -- 请求“格”对象,a1是格索引(从0开始),a2是缓存的格对象(可能为空) -- 在此建立“格”对象并填充其要显示的内容。 if not a2 then a2 = CCTableViewCell:create() -- Build cell struct,just like load ccbi or add sprite -- 建立“格”对象的结构,不要在此设定其显示的内容。 a2:addChild(cclabelTTF:create(""..a1,"Arial",20),1) --这里就相当cell容器,可以装入ccbi层、精灵、菜单等控件 local spriteDemo = CCScale9Sprite:create("80.png"); spriteDemo:setAnchorPoint(ccp(0,0)) spriteDemo:setContentSize(CCSizeMake(300,100)) a2:addChild(spriteDemo) end -- 修改“格”对象的内容 tolua.cast(a2:getChildByTag(1),"cclabelTTF"):setString(data[a1 + 1]) r = a2 a2:setTag(a1+1); elseif fn == "numberOfCells" then r = #data -- Cell events: -- 表格事件: elseif fn == "cellTouched" then print("按了:".. a1:getTag()) -- A cell was touched,a1 is cell that be touched. This is not necessary. elseif fn == "cellTouchBegan" then print("按下".. a1:getTag()) -- A cell is touching,a1 is cell,a2 is CCTouch elseif fn == "cellTouchEnded" then print("按完".. a1:getTag()) -- A cell was touched,a2 is CCTouch elseif fn == "cellHighlight" then print("高亮的:"..a1:getTag() ) -- A cell is highlighting,coco2d-x 2.1.3 or above elseif fn == "cellUnhighlight" then print("不是高亮".. a1:getTag()) -- A cell had been unhighlighted,coco2d-x 2.1.3 or above elseif fn == "cellWillRecycle" then -- A cell will be recycled,coco2d-x 2.1.3 or above print( a1:getTag() ) end return r end) --创建tableview local t = LuaTableView:createWithHandler(h,CCSizeMake(480,400)) t:setBounceable(true) --节点定位tableview NodeBg:addChild(t,1) TestLayer:addChild(NodeBg) -- parent:addChild(TestLayer) return TestLayer end