TableView 继承于 ScrollView
--创建TableView
function PanelLobbyGameListUI:init_table_view()
local _list_size = self:getContentSize() self.m_tableView = cc.TableView:create(_list_size) --设置视图大小 self.m_tableView:setAnchorPoint(cc.p(0, 0)) --设置锚点(默认就是 0,0 ) self.m_tableView:setPosition(cc.p(0, 0)) --设置位置 --设置滑动方向(水平滑动:cc.SCROLLVIEW_DIRECTION_HORIZONTAL,垂直滑动:cc.SCROLLVIEW_DIRECTION_VERTICAL)默认垂直滑动 self.m_tableView:setDirection(cc.SCROLLVIEW_DIRECTION_HORIZONTAL) --设置排列方式(从小到大排列:cc.TABLEVIEW_FILL_TOPDOWN,从大到小排列:cc.TABLEVIEW_FILL_BOTTOMUP)默认从大到小(idx:3,2,1,0) self.m_tableView:setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN) self.m_tableView:setDelegate() --委托代理(不知道干啥用的) self.m_tableView:setBounceable(false) --设置滑动回弹效果,默认启用 self:addChild(self.m_tableView)self.m_tableView:registerScriptHandler(handler(self, self.cellSizeForTable), cc.TABLECELL_SIZE_FOR_INDEX) self.m_tableView:registerScriptHandler(handler(self, self.tableCellAtIndex), cc.TABLECELL_SIZE_AT_INDEX) self.m_tableView:registerScriptHandler(handler(self, self.onTouchRoomItem), cc.TABLECELL_TOUCHED) self.m_tableView:registerScriptHandler(handler(self, self.numberOfCellsInTableView), cc.NUMBER_OF_CELLS_IN_TABLEVIEW) self:table_view_reload_data() end --设置cell的大小,可以根据idx区分(idx 最小为 0) function PanelLobbyGameListUI:cellSizeForTable(view, idx) return CELL_SIZE_WIDTH + CELL_SPACE, CELL_SIZE_HEIGHT end --创建cell用户可以在cell上添加子节点 function PanelLobbyGameListUI:tableCellAtIndex(view, idx) local cellIndex = idx + 1 local cell = view:dequeueCell() local _item_data = self.game_list[cellIndex] if nil == cell then local _room_item = NodeLobbyGameUnit.new() _room_item:init(_item_data) _room_item:setName("PanelLobbyGameListUIUnit") _room_item:setPosition(cc.p(CELL_SIZE_WIDTH / 2, CELL_SIZE_HEIGHT / 2)) cell = cc.TableViewCell:new() cell:addChild(_room_item) else local _room_item = cell:getChildByName("PanelLobbyGameListUIUnit") _room_item:init(_item_data) end return cell end --点击cell的时候回调 function PanelTrendAnimals:onTouchRoomItem(view, cell) end --指定创建cell的个数 function PanelTrendAnimals:numberOfCellsInTableView(view) return table.nums(self.game_left_list) end function PanelLobbyGameListUI:table_view_reload_data( is_force ) local _off_set = self.m_tableView:getContentOffset() self.m_tableView:reloadData()
if _off_set.x <= 0 and not is_force then self.m_tableView:setContentOffset(cc.p(_off_set.x, 0)) --移动至组件最右边 --self.m_tableView:setContentOffset(cc.p(self.m_tableView:getViewSize().width - self.m_tableView:getContentSize().width, 0)) end end 参考:TableView的使用方法_pyf_914406232的博客-CSDN博客 参考:cocos2dx基础篇(15) 列表视图CCTableView - 穆玄琅 - 博客园 (cnblogs.com)