在网上查了些资料,我们先开始来创建一个TableView,

class MyListViewLayer : public MyListViewLayerBase, public CCTableViewDataSource, public CCTableViewDelegate

先继承CCTableViewDataSource,CCTableViewDelegate

需要实现CCTableViewDataSource:

CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx);
	unsigned int numberOfCellsInTableView(CCTableView *table);

然后实现ScrollView中的:

void tableCellTouched(CCTableView* table, CCTableViewCell* cell);

 

具体实现如下:

void MyListViewLayer::initLayer() {
	CCSize size = CCDirector::sharedDirector()->getWinSize();
	CCTableView *tableView = CCTableView::create(this, CCSizeMake(200, 200));
	tableView->setAnchorPoint(ccp(0.5f, 0.5f));
	tableView->setPosition(ccp(size.width / 2.0f, size.height / 2.0f));
	tableView->setDirection(kCCScrollViewDirectionVertical);

	tableView->setDelegate(this);
	tableView->setVerticalFillOrder(kCCTableViewFillTopDown);
	tableView->reloadData();// add
	this->addChild(tableView, 1);
	this->setTouchEnabled(true);
}

 

CCSize MyListViewLayer::cellSizeForTable(CCTableView *table) {
	return CCSizeMake(200, 100);

}

CCTableViewCell* MyListViewLayer::tableCellAtIndex(CCTableView *table, unsigned int idx) {
	CCTableViewCell *cell = table->dequeueCell();
	if(cell == NULL) {
		cell = new CCTableViewCell();
		cell->autorelease();
	}

	cell->removeAllChildrenWithCleanup(true);

	CCSprite *testSprite = CCSprite::create("leftSelected.jpg");
	testSprite->setAnchorPoint(ccp(0.5f, 0.5f));
	testSprite->setPosition(ccp(200, idx * 50 + 100));//创建一个table
	CCSize size = testSprite->getContentSize();
	testSprite->setContentSize(ccp(100, 100));
	cell->addChild(testSprite, 2);

	return cell;
}

unsigned int MyListViewLayer::numberOfCellsInTableView(CCTableView *table) {
	return 3;//table 个数
}

void MyListViewLayer::tableCellTouched(CCTableView* table, CCTableViewCell* cell) {
	CCLOG("tableCellTouched\n");
}