可以运行,已经测试过了,参考网络上别人的代码,觉得很有用,记录。直接上代码:
发现一个很坑爹的地方,就是tableview定size的宽高,与tableview的cell的高宽是恰恰相反。。这个API让我有点凌乱..
(注意方法声明的时候,用的.跟: 不可以混用。不然就错了~~)
1 -- 2 -- Date: 2014-11-13 15:55:20 3 -- 4 --调用代码: local rlayer = require("app.scenes.TableViewLayer").new() 5 -- rlayer:setAnchorPoint(ccp(0, 0)) 6 -- rlayer:setPosition(ccp(0, 0)) 7 -- self:addChild(rlayer) 8 local TableViewLayer = class("TableViewLayer", function() 9 return display.newLayer() 10 end) 11 12 function TableViewLayer:ctor() 13 self:onEnter() 14 end 15 16 function TableViewLayer.scrollViewDidScroll(view) 17 print("scrollViewDidScroll") 18 end 19 20 function TableViewLayer.scrollViewDidZoom(view) 21 print("scrollViewDidZoom") 22 end 23 24 function TableViewLayer.tableCellTouched(table,cell) 25 print("cell touched at index: " .. cell:getIdx()) 26 end 27 28 function TableViewLayer.cellSizeForTable(table,idx) 29 return 30,60 --返回tableview中一个单位cell的高,宽 30 end 31 32 function TableViewLayer.tableCellAtIndex(table, idx) 33 local strValue = string.format("%d",idx) 34 local cell = table:dequeueCell() 35 local label = nil 36 if nil == cell then 37 cell = CCTableViewCell:new() 38 --底层 39 local table_bg = CCSprite:create("res/table_bg.png") 40 table_bg:setAnchorPoint(CCPointMake(0,0)) 41 table_bg:setPosition(CCPointMake(0, 0)) 42 cell:addChild(table_bg) 43 44 --图片层 45 local sprite = CCSprite:create("res/icon.png") 46 sprite:setAnchorPoint(CCPointMake(0,0)) 47 sprite:setPosition(CCPointMake(0, 0)) 48 cell:addChild(sprite) 49 50 --文字层 51 label = CCLabelTTF:create(strValue, "Helvetica", 20.0) 52 label:setPosition(CCPointMake(0,0)) 53 label:setAnchorPoint(CCPointMake(0,0)) 54 label:setTag(123) 55 cell:addChild(label) 56 else 57 label = tolua.cast(cell:getChildByTag(123),"CCLabelTTF") 58 if nil ~= label then 59 label:setString(strValue) 60 end 61 end 62 63 return cell 64 end 65 66 --tableview中的cell个数 67 function TableViewLayer.numberOfCellsInTableView(table) 68 return 25 69 end 70 71 function TableViewLayer:onEnter() 72 local table_view = CCTableView:create(CCSizeMake(60, 500)) --设定tableview的宽、高。tableview的大小决定滑动tableview的可触摸区域 73 table_view:setAnchorPoint(ccp(0, 1)) 74 table_view:setDirection(kCCScrollViewDirectionVertical) 75 table_view:setPosition(CommonAPI:getCenterX()/2,CommonAPI:getCenterY()/2) 76 self:addChild(table_view) 77 78 table_view:setVerticalFillOrder(kCCTableViewFillTopDown) --kCCTableViewFillBottomUp 79 table_view:registerScriptHandler(self.scrollViewDidScroll,CCTableView.kTableViewScroll) 80 table_view:registerScriptHandler(self.scrollViewDidZoom,CCTableView.kTableViewZoom) 81 table_view:registerScriptHandler(self.tableCellTouched,CCTableView.kTableCellTouched) 82 table_view:registerScriptHandler(self.cellSizeForTable,CCTableView.kTableCellSizeForIndex) 83 table_view:registerScriptHandler(self.tableCellAtIndex,CCTableView.kTableCellSizeAtIndex) 84 table_view:registerScriptHandler(self.numberOfCellsInTableView,CCTableView.kNumberOfCellsInTableView) 85 table_view:reloadData() 86 end 87 88 return TableViewLayer
over~
注:在使用过程中,向下拖拉进度条太大力的时候,会发现tableview的单元cell乱序的情况。
解决办法是:去除我上面贴的代码的36行判断语句。