废话不多说直接上代码
local MessageLayer = class("MessageLayer", cc.load("mvc").ViewBase)
local MessageItem = require("app.views.Hall.Friends.MessageItem")
function MessageLayer:onCreate()
end
function MessageLayer:initUI( )
self.root = cc.CSLoader:createNode("Hall/Friends/MessageLayer.csb")
self:addChild(self.root)
local childConfig = {
["panel"] = {name = "panel"},
-- ["panel.rankBtn"] = {name = "rankBtn", click = "rankBtnClick_"},
-- ["panel.moneyBg.moneyText"] = {name = "moneyText"},
-- ["panel.diamondBg.diamondText"] = {name = "diamondText"},
-- ["panel.diamondBg.diamondAddBtn"] = {name = "rankBtn", click = "diamondAddBtnClick_"},
}
cp.getUtils("GameGlobal").setCSNodeBinding(self,self.root,childConfig)
local sz = self.panel:getContentSize()
self._tableView = cc.TableView:create(cc.size(display.width, sz.height))
self._tableView:setDirection(cc.SCROLLVIEW_DIRECTION_VERTICAL)
self._tableView:setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN)
self._tableView:setDelegate()
self.panel:addChild(self._tableView)
self._tableView:registerScriptHandler(handler(self,self.tableCellTouched), cc.TABLECELL_TOUCHED)
self._tableView:registerScriptHandler(handler(self,self.cellSizeForTable), cc.TABLECELL_SIZE_FOR_INDEX)
self._tableView:registerScriptHandler(handler(self,self.tableCellAtIndex), cc.TABLECELL_SIZE_AT_INDEX)
self._tableView:registerScriptHandler(handler(self,self.numberOfCellsInTableView), cc.NUMBER_OF_CELLS_IN_TABLEVIEW)
end
function MessageLayer:initData( )
self._data = {{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1}}
self._tableView:reloadData()
end
function MessageLayer:tableCellTouched( tableView,cell )
local idx = cell:getIdx() + 1
print("+++++++++++++++点击:"..idx)
end
function MessageLayer:numberOfCellsInTableView(tableView)
return #self._data
end
function MessageLayer:cellSizeForTable(tableView)
return display.width, 154
end
function MyFriendLayer:tableCellAtIndex(view, idx)
local itemData = self._data[idx+1] or {}
local cell = view:dequeueCell()
local item = nil
if not cell then
cell = cc.TableViewCell:new()
item = MessageItem.new()
item:addTo(cell)
item:setName("MessageItem")
else
item = cell:getChildByName("MessageItem")
end
item:updateData(itemData)
return cell
end
return MessageLayer
需要注意的地方:
- cell 一定是 cc.TableViewCell;
- 我用的是Cocos2dx 4.0 tableView没有裁剪,解决方案是把它加在Panel上,用Panel裁剪;
- idx 是从0开始的;
- 注意cell数据的刷新,复用。
CCTableView继承CCScrollView,CCScrollView继承Layer
UIListView继承UIScrollView,UIScrollView继承Layout
网友评论