在Cocos2d-x使用TableView的过程如下:

  • 首先用一个类继承CCTableViewDelegate(代理)和CCTableViewDataSource(数据源);
  • 然后实现里面的有关tableView操作和内容的四个抽象方法;
  • 最后就可以在场景类中通过CCTableView来使用这个类,CCTableView会分别设置代理对象和数据源对象

示例:
TableView.h


#ifndef _TABELVIEW_H_
#define _TABLEVIEW_H_

#include "cocos2d.h"
#include "cocos-ext.h"
using namespace cocos2d;

class TableView : public cocos2d::extension::CCTableViewDelegate,
	public cocos2d::extension::CCTableViewDataSource{

public:
	//================
	//需实现的方法
	//================
	//处理触摸事件
	virtual void tableCellTouched(cocos2d::extension::CCTableView* table, 
	cocos2d::extension::CCTableViewCell* cell);
	//每一项的宽度和高度
	virtual cocos2d::CCSize cellSizeForTable(cocos2d::extension::CCTableView *table);
	//生成列表每一项的内容
unsigned int idx);
	//一共多少项
	virtual unsigned int numberOfCellsInTableView(cocos2d::extension::CCTableView *table);

	//================
	//可忽略的方法
	//================
	//继承自scrollView所需要的方法,可以空函数体忽略
	virtual void scrollViewDidScroll(cocos2d::extension::CCScrollView* view){}
	virtual void scrollViewDidZoom(cocos2d::extension::CCScrollView* view){}

};

#endif



TableView.cpp


#include "TableView.h"

//每个单元格选项的大小
CCSize TableView::cellSizeForTable(extension::CCTableView *table){
	return CCSizeMake(480, 320);
}

//单个选项的显示
extension::CCTableViewCell* TableView::tableCellAtIndex(extension::CCTableView *table, unsigned int idx){

	extension::CCTableViewCell *cell = table->dequeueCell();
	if (!cell) {
		// the sprite
		cell = new extension::CCTableViewCell();
		cell->autorelease();
		CCSprite *sprite = CCSprite::create("HelloWorld.png");
		sprite->setAnchorPoint(ccp(0, 0));
		sprite->setPosition(ccp(0, 30));
		cell->addChild(sprite);
	}
	return cell;

}

//选项个数
unsigned int TableView::numberOfCellsInTableView(extension::CCTableView *table){
	return 5;
}

//点击单元格选项的响应事件
void TableView::tableCellTouched(extension::CCTableView* table, extension::CCTableViewCell* cell){

	char s[20];
	sprintf(s, "the cell is %d", cell->getIdx());
	CCMessageBox(s, "对话框");

}


在HelloWorld::init方法里的使用TableView的部分代码:

//创建一个自己的TableView
TableView* tv = new TableView();				
//此处的tv绑定的是数据源
cocos2d::extension::CCTableView *tableView = 
cocos2d::extension::CCTableView::create(tv, CCSizeMake(480, 320));				
//横向排列	
tableView->setDirection(cocos2d::extension::kCCScrollViewDirectionHorizontal);	
//放在屏幕中央
tableView->setPosition(ccp(visibleSize.width / 2 - 240, visibleSize.height / 2 - 160));	
//此处的tv是代理
tableView->setDelegate(tv);
tableView->setVerticalFillOrder(cocos2d::extension::kCCTableViewFillTopDown);
this->addChild(tableView);
tableView->reloadData();

效果图:
这里写图片描述

点击某一图片后:
这里写图片描述